1

我开始使用 visual vm ,以找出应用程序使用这么多内存的原因。

只是为了确保我理解的事情:

通过 heapdump 获取完整的内存映射?

使用内存分析器(因为只考虑了 10 个对象?)只有一个概述?

我理解正确吗?

谢谢

4

2 回答 2

3

VisualVM 有一个内存分析模式,它可以持续跟踪应用程序中的内存分配情况。在这种模式下,它无法承受跟踪每个对象的负载,因此折衷方案是每 10 个分配跟踪一次。另一方面,监视器选项卡上提供堆转储功能,您可以在其中获得所有对象的完整详细信息。此转储等效于命令行heapdump实用程序。

于 2012-12-25T18:18:20.677 回答
3

1) heapdump 让您找出哪些对象实际上由您的应用程序持有并消耗堆

2)内存分析器向您显示您的应用程序分配对象(+它们的类)的速率。这将主要由临时分配的对象组成

(1) 主要是查找内存泄漏/了解堆消耗

(2) 最适合直接和间接地将性能描述为对象分配成本性能(碎片化,更多 gc)。此外,在内存泄漏的情况下,这可以告诉您导致内存泄漏的对象来自何处。

于 2012-12-25T20:04:11.453 回答