分析JVisualVM配置文件 - 查找大量原始类型的来源?

时间:2010-03-13 10:53:15

标签: java profiling

我正在尝试减少应用程序的内存占用。 JVisualVM堆转储报告占用最多空间的对象是:

  • 炭[]
  • 字节[]
  • INT []

哪个不是特别有用。如何将这些对象追溯到持有它们的父类?

由于

2 个答案:

答案 0 :(得分:4)

VisualVM会计算保留的大小。您必须手动添加列,但默认视图似乎没有。

答案 1 :(得分:3)

这些原始数组很可能是String之类的内部状态,它将状态保持在char[]。一个好的剖析器将理解这一点,并将具有“保留大小”的概念,其描述了对象的大小,包括其子对象的大小。这表明String占用了空间,而不是char[]

但是,我看不到VisualVM中提到的“保留大小”。它似乎没有适当的商业替代品的分析能力。

要查看我正在谈论的内容,请尝试下载YourKit的评估,并将其连接到您的应用。它比VisualVM复杂得多,但是它可以为你提供堆对象的保留大小,而且非常有启发性。它还将显示引用堆上每个对象的内容,以便跟踪泄漏。