我开始使用 visual vm ,以找出应用程序使用这么多内存的原因。
只是为了确保我理解的事情:
通过 heapdump 获取完整的内存映射?
使用内存分析器(因为只考虑了 10 个对象?)只有一个概述?
我理解正确吗?
谢谢
VisualVM 有一个内存分析模式,它可以持续跟踪应用程序中的内存分配情况。在这种模式下,它无法承受跟踪每个对象的负载,因此折衷方案是每 10 个分配跟踪一次。另一方面,监视器选项卡上提供堆转储功能,您可以在其中获得所有对象的完整详细信息。此转储等效于命令行heapdump
实用程序。
1) heapdump 让您找出哪些对象实际上由您的应用程序持有并消耗堆
2)内存分析器向您显示您的应用程序分配对象(+它们的类)的速率。这将主要由临时分配的对象组成
(1) 主要是查找内存泄漏/了解堆消耗
(2) 最适合直接和间接地将性能描述为对象分配成本性能(碎片化,更多 gc)。此外,在内存泄漏的情况下,这可以告诉您导致内存泄漏的对象来自何处。