【发布时间】:2010-10-19 22:17:18
【问题描述】:
我需要以编程方式准确找出给定 Java 对象占用了多少内存,包括它所引用的对象占用的内存。
我可以生成内存堆转储并使用工具分析结果。但是,生成堆转储以及此类工具读取转储以生成报告需要相当长的时间。鉴于我可能需要多次执行此操作,如果我可以在我的项目中添加一些代码来赋予我“运行时”这个价值,我的工作将会更加灵活。
我怎样才能最好地做到这一点?
ps:具体来说,我有一个 javax.xml.transform.Templates 类型的对象集合
【问题讨论】:
-
您可以在运行时使用反射来调查您的对象图。
-
实例的开销如何?这也可能因运行时和系统而异(想想 x64...)。
-
我不会称之为完全的欺骗。
-
嗯,不完全是骗子,因为原始问题未能提供在这种情况下可用的答案......