我阅读了进程内存 vs 堆 -- JVM,我也遇到同样的问题。
JVM进程内存使用量持续增加且不会缩减。我通过在Linux服务器上运行 top 命令来检查。该应用程序将作业调度到集群中(使用Quartz+Sun Java DRMAA API)。
Java堆空间在应用程序生命周期内保持在限制范围内,但JVM进程显示内存使用量稳步上升且没有下降。
这是内存泄漏吗?如果是,为什么堆空间保持在限制范围内。有人可以解释一下吗?
更新:我使用 -Xmx1600m -Xms1600m,当我通过jconsole跟踪时,可以看到堆空间远低于450m的这个限制,但 top 命令显示该进程正在使用超过900m的内存。
-XX:MaxHeapFreeRatio
,看看是否能解决你的问题。 - trutheality