Макет объекта 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