Java内存之谜(我是否有泄漏)?
Java内存之谜(我是否有泄漏)?
我在Linux服务器上运行一个独立的Java问题。我使用-Xmx256m启动了JVM。我附加了一个JMX监视器,并且可以看到堆从未真正超过256Mb。但是,在我的Linux系统上运行top命令时,我可以看到:
1)首先,该进程的RES内存使用量约为350Mb。为什么?我想这是因为堆之外的内存吗?
2)其次,该进程的VIRT内存使用量不断增长。它永远不停止!它现在显示为2500Mb!那么我是否有泄漏?但是堆不增加,只是循环!
最终,这会带来问题,因为系统的交换会不断增长,最终导致系统死机。
有什么想法是怎么回事吗?
我想要问的重要问题是,这可能是我的代码而不是JVM、内核等导致的结果的一些情况。例如,如果线程数量不断增长,是否符合我观察到的描述?您能否建议我注意类似的任何情况?
admin 更改状态以发布 2023年5月22日