Lorsque l'on alloue un objet en Java, en plus des champs, la machine virtuelle ajoute un “header” qui permet de répondre à des questions comme object.getClass() ou Thread.holdLock(object).
Je vous propose un talk sur l'histoire des versions Java depuis que Java est OpenSource jusqu'à nos jours (et un peu plus dans le future) à travers le header des objets.
En regardant les différentes implantations de ce header, on peut s'en servir comme proxy pour comprendre les péoccupations de la communauté Java à l'époque et comment les développeurs de la VM ont tenté d'y répondre.