【发布时间】:2013-02-12 10:56:07
【问题描述】:
如果我有一个对象,并且想粗略估计对象的大小与其组件的大小相比,我可以这样做吗?
Object 有一个 int 字段和一个 float 字段。因此,该对象的空间使用量是对该对象的引用大小(8)字节 + 两个原始值 16+16 的大小,这使我需要 40 字节或 25% 的额外空间。
【问题讨论】:
-
对象也将引用它的基类。如果它存在于对象中(不在函数中),则引用的大小和大小将很重要。
-
由于 OOP 压缩(google it),引用的大小主要是 4 个字节。一个空的
Object占用 16 个(或者是 24 个?)字节的纯开销(监视器、类型标记、各种标志)。总数再次与 8 字节边界字对齐。 -
找出答案的最佳方法是通过分配一个较大的对象数组并比较前后的内存使用情况来进行测量。您还必须注意 GC-ing,并让自己相信结果对于您的 JVM 和设置是确定性的。