6

我的应用程序中有以下类:

class A {
  String someString;
  Locale someLocale;

  Map<Integer, B> someMap = new HashMap<Integer, B>();

  fillMap() {
    // some logic to fill the map with instances of B
  }
}

class B {
  // lots of filled collections
}

我正在使用 JProfiler 进行分析会话以识别一些内存问题。在“内存视图”选项卡上,具有聚合级别的类,例如,我有 2000 个 A 实例,总大小为 156KB。

我的问题是这个尺寸意味着什么?它只是对 A 对象的引用的大小,还是 A 的所有填充成员的大小(我特别想知道 Map)?我想这只是 A 参考尺寸,但想确保这一点。

4

1 回答 1

5

动态内存视图不显示保留大小,仅显示浅大小。

要查看保留的大小,请转到 heap walker,双击该类以创建一个新的对象集。然后,单击标题中的“计算保留和深度大小”。

这将为您提供整个类的保留大小,尽管单个实例的保留大小可能更有趣。为此,请转到“参考”视图或“最大对象”视图。

于 2013-02-21T20:46:26.940 回答