Kat*_*hir 19 java memory heap jvm process
我已经阅读了这个Process Memory Vs Heap - JVM ,我遇到了同样的问题.
jvm进程内存使用量不断增加而且从不收缩.我通过在linux服务器上做一个top来检查.应用程序正在将作业调度到集群(使用Quartz + Sun Java DRMAA API)
在应用程序生命周期中,Java堆空间保持在限制范围内,但是jvm进程显示内存使用量稳步攀升并且永远不会下降.
这是内存泄漏吗?如果是这样,为什么堆空间在限制范围内.有人可以解释一下吗.
更新:当我通过jconsole跟踪时,我有-Xmx1600m -Xms1600m我可以看到堆空间在这个限制范围内,距离为450m,但是top命令显示该进程使用超过900m.
Pet*_*rey 12
使用的总虚拟内存是最大堆+线程堆栈+直接内存+ perm gen +共享库的总和.这永远不会缩小.
使用的实际主内存取决于占用了多少虚拟内存.共享库是共享的,因此具有多个JVM不会导致此内存加倍等.
JVM从不向操作系统释放内存,但是如果长时间不使用主内存,则可以在需要时将其换出.