【发布时间】:2011-10-10 18:35:53
【问题描述】:
我已经阅读了这个Process Memory Vs Heap -- JVM 我也有同样的问题。
jvm 进程的内存使用量一直在增加,并且从不缩小。我通过在 linux 服务器上做一个顶部检查。应用程序正在将作业调度到集群(使用 Quartz + Sun Java DRMAA API)
在应用程序生命周期中,java 堆空间保持在限制范围内,但 jvm 进程显示内存使用量稳步攀升,并且从未下降。
这是内存泄漏吗?如果是这样,为什么堆空间在限制范围内。谁能解释一下。
更新:当我通过 jconsole 跟踪时,我有 -Xmx1600m -Xms1600m 我可以看到堆空间在这个限制范围内,大约 450m,但顶部命令显示进程使用超过 900m。
【问题讨论】:
-
请提供更多详细信息...正在使用多少内存,它获得的最大内存是多少,经过多长时间,您正在使用什么 -X 和相关标志等。
-
你可以试试
-XX:MaxHeapFreeRatio,看看能不能解决你的问题。 -
我正在研究类似的问题,
top显示 virt 大小超过 1GB,res 大小小于 50 MB。因此,virt/res 比率非常高。使用 jmap 或-XVerboseGCswitch 进行堆转储显示堆大小非常小(小于 50 MB)。如何找出占用非堆内存的内容?还有一些套接字 IO 涉及 usnig NIO,但我需要证据并且需要跟踪任何内存泄漏/查找根源。
标签: java memory process jvm heap-memory