Java内存泄漏,visualvm显示错误数据

vac*_*ach 5 java profiling memory-leaks visualvm

我运行了一个Java应用程序,几个小时后它满足了内存需求。我试图用visualvm检测内存泄漏,但是它显示了错误的数据(不知道如何发生)。

在屏幕截图中,您可以看到任务管理器显示了700Mb的内存使用情况,而visualvm显示了225 ...

有人知道这是怎么回事吗?

问候

在此处输入图片说明

Jor*_*e_B 4

请注意,您的操作系统仅知道 java 在一段时间内保留的内存总量(据我所知,java 不会轻易返回该内存量)。然而,java 在给定时刻可能没有使用所有内存,因此您可以看到这两个数字之间的差异。

例如,如果您像这样启动程序

java -Xmx512m -Xms256m ...
Run Code Online (Sandbox Code Playgroud)

那么你的 JVM 一启动就会占用 256 MB(操作系统或多或少会告诉你这一点)。但是,如果您打开内存查看工具(无论是 VisualVM、jconsole 等),它可能会显示您使用的内存少于该值(只是您不需要使用整个保留堆)。