OpendJDK具有Java Object Layout (JOL)工具,该工具可以估计指定对象的实例实际内存大小。 它可以显示HotSpot的对象布局,但在OpenJ9中会一样吗?
答案 0 :(得分:1)
嗯,恕我直言,至少对于 ,答案是否定的,如果您也计算引用的大小,那么{em {em}}是 HotSpot特有的UseCompressedOops
。可能是J9也有,但是可能没有。
也存在填充问题,因为HotSpot对象是8 bytes
对齐的(关于继承的事情比较复杂),但是我不知道J9
是否做到了……
答案 1 :(得分: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