我的申请中有以下课程:
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参考尺寸,但我想确保这一点。
答案 0 :(得分:3)
动态内存视图不显示保留的大小,只显示浅的大小。
要查看保留的大小,请转到堆walker,双击该类以创建新的对象集。然后,单击标题中的“计算保留和深度”。
这可以获得整个类的保留大小,尽管单个实例的保留大小可能更有趣。为此,请转到“参考”视图或“最大对象”视图。