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

时间:2019-03-27 10:06:24

标签: java

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

我这样运行:

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

3 个答案:

答案 0 :(得分:1)

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

自jdk-12起,就有这个JEP:

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

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

答案 1 :(得分:0)

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

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

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

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

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

答案 2 :(得分:0)

请尝试使用jlink自定义jre来解决此问题。您可以找到一个很好的例子here