In the Hotspot JVM, Java objects have an object header of 128 bits: a 64 bit multi-purpose header ("mark" or "lock") word and a 64-bit class pointer. With typical average object sizes of 5-6 words, this is quite significant: 2 of those words are always taken by the header. If it were possible to reduce the size of the header, we could significantly reduce memory pressure, which directly translates to reduced heap usage, higher object allocation rates, reduced GC activity, and better cache locality.
This talk introduces Project Lilliput which aims to reduce Hotspot's header size to 64 bit or even less. First Roman wants to discuss the current status quo and the problems team facing when trying to shrink the header, and then show some approaches to how they are solving those problems. A deep dive into JVM technology is guaranteed.