【问题标题】:OpenJ9 VM Object LayoutOpenJ9 VM 对象布局
【发布时间】:2019-01-06 15:40:23
【问题描述】:

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

【问题讨论】:

  • 不,不幸的是我需要更详细的答案。也许我有时间我会尝试自己分析源代码并为这个问题写一个答案

标签: java jol openj9


【解决方案1】:

好吧,恕我直言,答案是否定的,至少如果你也计算参考大小,UseCompressedOops HotSpot 特定的。可能 J9 也有,但可能没有。

还有填充的问题,在 HotSpot 中对象是 8 bytes 对齐的(关于继承有更复杂的事情),但我不知道 J9 是否这样做......

【讨论】:

    【解决方案2】:

    如果您有系统核心(例如通过 -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       
    

    【讨论】:

    • 这里必须阅读的是 Aleksey Shipilev - 什么是头部垃圾场
    猜你喜欢
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 2011-01-16
    • 2014-03-07
    • 2013-08-07
    • 2010-12-10
    • 1970-01-01
    相关资源
    最近更新 更多