Skip to content

Latest commit

 

History

History
34 lines (28 loc) · 1.67 KB

File metadata and controls

34 lines (28 loc) · 1.67 KB

Object's header

First bytes of each JVM object are used by object's header, which contains its essential internal information. Header's layout is well described in a comment in JVM source code - markOop.hpp.

Fragment of the comment with header layout:

32 bits:
\--------
 hash:25 ------------>| age:4    biased_lock:1 lock:2 (normal object)
 JavaThread*:23 epoch:2 age:4    biased_lock:1 lock:2 (biased object)
 size:32 ------------------------------------------>| (CMS free block)
 PromotedObject*:29 ---------->| promo_bits:3 ----->| (CMS promoted object)

 64 bits:
 \--------
 JavaThread*:54 epoch:2 unused:1   age:4    biased_lock:1 lock:2 (biased object)
 unused:25 hash:31 -->| unused:1   age:4    biased_lock:1 lock:2 (normal object)
 PromotedObject*:61 --------------------->| promo_bits:3 ----->| (CMS promoted object)
 size:64 ----------------------------------------------------->| (CMS free block)

 unused:25 hash:31 -->| cms_free:1 age:4    biased_lock:1 lock:2 (COOPs && normal object)
 JavaThread*:54 epoch:2 cms_free:1 age:4    biased_lock:1 lock:2 (COOPs && biased object)
 narrowOop:32 unused:24 cms_free:1 unused:4 promo_bits:3 ----->| (COOPs && CMS promoted object)
 unused:21 size:35 -->| cms_free:1 unused:7 ------------------>| (COOPs && CMS free block)

Sections:

Back: Unsafe Next: Class pointer

Up: Readme