我有一个java应用程序正在运行,几个小时后它就填满了内存。
我尝试使用 VisualVM 检测内存泄漏,但它显示错误的数据(不知道这是如何发生的)。
在屏幕截图中,您可以看到任务管理器显示内存使用量为 700Mb,而 VisualVM 显示内存使用量为 225...
有谁知道这里发生了什么事?
Regards
请注意,您的操作系统仅知道 java 在一段时间内保留的内存总量(据我所知,java 不会轻易返回该内存量)。然而,java 在给定时刻可能没有使用所有内存,因此您可以看到这两个数字之间的差异。
例如,如果您像这样启动程序
java -Xmx512m -Xms256m ...
那么你的 JVM 一启动就会占用 256 MB(操作系统或多或少会告诉你这一点)。但是,如果您打开内存查看工具(无论是 VisualVM、jconsole 等),它可能会显示您使用的内存少于该内存(只是您不需要使用整个保留堆)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)