OpendJDK 有一个Java 对象布局 (JOL)工具,它允许估计指定对象的实例实际内存大小。它可以显示 HotSpot 的对象布局,但在 OpenJ9 中是否相同?
问问题
232 次
2 回答
1
好吧,恕我直言,答案是否定的,至少如果你也计算参考大小,UseCompressedOops
那就是HotSpot 特定的。可能 J9 也有,但可能没有。
还有填充的问题,在 HotSpot 对象是8 bytes
对齐的(关于继承有更复杂的事情),但我不知道是否J9
这样做......
于 2018-07-30T11:40:38.573 回答
1
如果您有系统核心(例如通过 -Xdump:system:events=vmstop),您可以使用 jdmpview 的!objectsizeinfo
命令查看活动对象的大小,包括填充和对齐,例如:
> !objectsizeinfo java/lang/String
Object field size summary
=========================
Class Total size Data size Space used Instances char byte short int long float double boolean object hidden
---------------- ---------- --------- ---------- --------- ---- ---- ----- --- ---- ----- ------ ------- ------ ------
java/lang/String 16 10* 66752 4172 0 2 0 0 0 0 0 0 1 0
Class Total size Data size Space used Instances char byte short int long float double boolean object hidden
Heap summary 66752 41720 66752 4172 0 8344 0 0 0 0 0 0 4172 0
于 2018-11-08T19:49:56.810 回答