Project Lilliput: Shrinking object headers in the Hotspot JVM

 /  EN /

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.


Roman Kennke
Red Hat

Roman Kennke is a long-time free Java (and Software) engineer, originally involved in GNU Classpath since 2004, later participated in opening OpenJDK and since then is a regular contributor to several parts of OpenJDK (AWT/Swing, general class library, lately Hotspot). After finishing his Diploma in 2007 he was employed by aicas, who are building a hard real-time capable Java VM. During 2009 and 2010 worked for Sun Microsystems on Java Webstart. After a short period as a contractor for JP Morgan, he's now a Principal Software Engineer at Red Hat, where he used to work on Thermostat, the Zero and Shark port of OpenJDK, and currently on the Shenandoah GC and the Lilliput project.