繁体   English   中英

为什么Java应用程序占用大量内存?

[英]Why does java application take much memory?

我有一个小的Java应用程序,它基本上是一个命令行实用程序,它可以休眠99%的时间,每天运行一次,以在特定位置复制文件。 该应用程序占用的内存为10 Mb。 当然,这并不是一个很大的数目,但是看起来该应用程序占用了更多的内存。 您能否建议如何减少该应用程序的内存量?

我这样运行:

java -Xmx12m -jar c:\\copyFiles\\copyFiles.jar

您允许应用程序使用大约12 MB的空间,因为对JVM使用了-Xmx12m参数。 Java在内存方面有点浪费。 您可以减少应用程序可以使用的最大内存量:

-Xmx10k最多可以使用10 KB的内存。

-Xmx10m最多可以使用10 MB的内存。

-Xmx10g最多可以使用10 GB的内存。

随意混合此设置,但要小心。 如果超过设置的数量,则会抛出OutOfMemory-exception。

AFAIK在很大程度上取决于所使用的垃圾收集器和jvm版本,但是由于许多原因,通常VM并不非常渴望将内存还给OS。 这里关于同一主题的更广泛的讨论

从jdk-12开始,有这个JEP:

http://openjdk.java.net/jeps/346

这将指示VM(带有某些标志)在“计划的”垃圾收集器周期发生后将内存还给OS-这是由一些新引入的标志控制的; 阅读JEP以了解更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM