如果我有一个对象,并且想要粗略估计该对象的大小与其组件的大小相比,我可以这样做吗?
该对象有一个 int 字段和一个 float 字段。因此,该对象的空间使用量是对该对象的引用的大小 (8) 字节 + 两个原始值 16+16 的大小,这为我提供了 40 字节或所需的 25% 额外空间。
最佳答案
检查对象大致大小的一种方法是创建该对象的许多实例并检查前后的内存。为了获得更准确的数字,您可以使用特定的 JVM 参数:
-verbose:gc -XX:-UseTLAB
verbose:gc
确保在测量过程中不会发生 GC-XX:-UseTLAB
要求 JVM 不要以 block 的形式分配内存(否则它会为了效率而这样做)。关闭该选项可以提供更准确、更稳定的结果。
然后,您可以在分配之前和之后调用 Runtime.getRuntime().freeMemory();
来监视内存使用情况。
请注意,添加字段并不一定会增加内存使用量。例如,在热点 7 64 位上,一个对象在内存中占用 16 个字节,但向该对象添加一个 int
字段不会改变大小(即保存一个 int
的对象) code> 字段在该 JVM 上也是 16 字节)。这是由于内存对齐限制造成的。
关于java - 对象的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14830885/