【发布时间】:2011-01-04 23:23:48
【问题描述】:
我正在尝试了解使用 new 运算符创建 Java 对象时分配的大小。
假设我正在创建一个类
public class NewClass {
NewClass() { }
}
当我使用NewClass nc = new NewClass(); 创建NewClass 的实例时。在堆中创建的NewClass 的大小是多少?
~杰根
【问题讨论】:
标签: java memory allocation
我正在尝试了解使用 new 运算符创建 Java 对象时分配的大小。
假设我正在创建一个类
public class NewClass {
NewClass() { }
}
当我使用NewClass nc = new NewClass(); 创建NewClass 的实例时。在堆中创建的NewClass 的大小是多少?
~杰根
【问题讨论】:
标签: java memory allocation
分析是最好的方法,但您可以像这样得到一个很好的估计:
每个对象 8 个字节(无开销),外加字段。
最终结果增加到最接近的 8 个字节的倍数。
另请参阅我的示例here,了解如何计算更复杂对象的内存使用情况。注意:这些规则可能因虚拟机而异,并且可能会随着新版本的虚拟机的出现而改变。我的估计只适用于 Sun JVM,尽管我怀疑 IBM 的结果会相似。
【讨论】: