[英]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.