Java对象的创建和内存大小
我正在尝试了解使用 new 运算符创建 Java 对象时将分配的大小。
我正在创建一个类
public class NewClass {
NewClass() { }
}
考虑一下,当我使用 NewClass nc = new NewClass();
创建 NewClass
的实例时, 。在堆中创建的 NewClass 的大小是多少?
〜杰根
I am trying understand about the size that a Java object will be allocated with when created using a new operator.
Consider that i am creating a class
public class NewClass {
NewClass() { }
}
when i create an instance of NewClass
using NewClass nc = new NewClass();
. what is the size of the NewClass
that gets created in the heap?
~ Jegan
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
分析是最好的方法,但您可以像这样获得一个很好的估计:
每个对象 8 个字节(裸开销),加上字段。
最终结果增加到最接近的 8 字节的倍数。
另请参阅我的示例此处了解如何计算更多内存使用情况复杂的对象。注意:这些规则可能因虚拟机而异,并且可能会随着新版本虚拟机的出现而改变。我的估计仅适用于 Sun JVM,尽管我怀疑 IBM 的结果会类似。
Profiling is the best way, but you can get a good estimate like so:
8 bytes per object (bare overhead), plus fields.
The final result is increased to the nearest multiple of 8 bytes.
See also my example here for how to calculate memory use on a more complex object. Note: these rules may vary with VMs, and may change as newer versions of the VM come out. My estimate only applies to the Sun JVM, although I suspect IBM's results will be similar.
我认为你需要使用分析器来衡量这一点。您可以使用 JProfiler 或 YourKit 分析器。
I think you need to use a profiler to measure this. You may use JProfiler or YourKit profilers for this.