Java VisualVM:如何在堆中找到对象的大小,包括它从其字段引用的所有对象?

Java VisualVM:如何在堆中找到对象的大小,包括它从其字段引用的所有对象?,java,visualvm,oql,Java,Visualvm,Oql,如何在堆中找到对象的大小,包括它从其字段引用的所有对象 在heap dump下的Classes视图中,大小仅表示对象的“浅”大小。我想知道对象的大小,基本上是通过字段引用的对象的总大小 谢谢获取堆转储(右键单击左侧面板中的应用程序,然后单击“堆转储”) 双击“类”选项卡中您选择的类,它将打开该类的“实例”选项卡 最后单击选项卡右上角的“计算保留尺寸”。您可以获得保留尺寸和浅尺寸。差异见下文 *)要获得“保留大小” jvisulVM->“监视器”选项卡->堆转储”选项卡->转到创建的堆转储->单击

如何在堆中找到对象的大小,包括它从其字段引用的所有对象

在heap dump下的Classes视图中,大小仅表示对象的“浅”大小。我想知道对象的大小,基本上是通过字段引用的对象的总大小

谢谢

获取堆转储(右键单击左侧面板中的应用程序,然后单击“堆转储”)

双击“类”选项卡中您选择的类,它将打开该类的“实例”选项卡


最后单击选项卡右上角的“计算保留尺寸”。

您可以获得保留尺寸和浅尺寸。差异见下文
*)要获得“保留大小” jvisulVM->“监视器”选项卡->堆转储”选项卡->转到创建的堆转储->单击它的“OQL控制台”->,然后在它的底部“查询编辑器”编写您的OQL sql,例如找到带有val“GHT”的字符串。查询将
从java.lang.String s中选择s,其中s.toString().equals(“GHT”)
->单击“执行”->在查询结果中,单击所需的引用->您可以看到关于您的实例的信息,您可以单击“计算保留大小”以获得您想要的
*)要得到“浅”的尺寸 jvisulVM->“监视器”选项卡->堆转储”选项卡->转到创建的堆转储->单击它的“OQL控制台”->,然后在它的底部“查询编辑器”编写您的OQL sql,例如找到带有val“GHT”的字符串。查询将是
从java.lang.String s中选择sizeof(s),其中s.toString().equals(“GHT”)
->单击“执行”->您将看到以字节为单位的对象大小
更详细的你可以在这里读到“浅薄”

如何进入“实例视图”?首先进行堆转储(右键单击左侧面板中的应用程序,然后单击“堆转储”),然后双击“类”选项卡中选择的类,它将打开该类的“实例”选项卡。最后单击选项卡右上角的“计算保留尺寸”。