1

OpendJDK 有一个Java 对象布局 (JOL)工具,它允许估计指定对象的实例实际内存大小。它可以显示 HotSpot 的对象布局,但在 OpenJ9 中是否相同?

4

2 回答 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 回答