在任务管理器和Profiler中监控java应用程序的内存,哪个正确?

问题描述 投票:0回答:1

我正在监控一个从Netbeans运行的应用程序的内存使用情况。 我对两个不同的结果有些困惑。

任务管理器给了我一个值,而Netbeans中的Profiler却指示了不同的东西。

例如,以下是任务管理器的截图,该应用程序的内存使用量为2,927.3 MB。enter image description here

但剖析器显示的是这样的(看右上图)。enter image description here总的堆大小超过了3GB 但使用的堆看起来只有不到2GB。

所以在我看来,Profiler和任务管理器的数值并不一致。

哪一个更准确地表示应用程序的内存使用情况?

java memory garbage-collection profiler visualvm
1个回答
0
投票

这是因为一个Java进程消耗的内存是由两个部分组成的,至少据我所知是这样。

CExample exam = new CExample()。

非堆,这是你发现每个线程和元数据类的堆的段,以前叫永久生成,目前叫元空间。据我所知,非堆还包含由Just In Time编译器生成的本地代码,以提高应用程序的性能。

我想你可以查看这些链接,以获得更多关于堆和非堆段的见解。

https:/betsol.comjava-memory-management-for-java-virtual-machine-jvm。

https:/docs.oracle.comjavase8docsapijavalangmanagementMemoryMXBean.html。

© www.soinside.com 2019 - 2024. All rights reserved.