Макет объекта OpenJ9 VM

OpendJDK имеет инструмент Java Object Layout (JOL), который позволяет оценить реальный объем памяти экземпляра указанного объекта. Он может отображать макет объекта для HotSpot, но будет ли он таким же в OpenJ9?

2 ответа

Ну, ИМХО, ответ - нет, хотя бы потому, что если вы посчитаете размеры ссылок тоже, есть UseCompressedOops это специфично для HotSpot. Может быть, у J9 тоже есть, а может и нет.

Существует также проблема заполнения, в HotSpot объекты 8 bytes выровненный (есть более сложные вещи о наследовании), но я не знаю, J9 это делает...

Если у вас есть системное ядро ​​(например, через -Xdump:system:events=vmstop), вы можете посмотреть размеры живых объектов, включая отступы и выравнивание, используя jdmpview's !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       
Другие вопросы по тегам