*Jikes* - * * - *TIB Pointer:* The TIB (Type Information Block) holds information that applies to all objects of a type. The structure of the TIB is defined by TIBLayoutConstants. A TIB includes the virtual method table, a pointer to an object representing the type, and pointers to a few data structures to facilitate efficient interface invocation and dynamic type checking. - *Hash Code:* Each Java object has an identity hash code. This can be read by *Object.hashCode* or in the case that this method overridden, by *System.identityHashCode*. The default hash code is usually the location in memory of the object, however, with some garbage collectors objects can move. So the hash code remains the same, space in the object header may be used to hold the original hash code value. - *Lock:* Each Java object has an associated lock state. This could be a pointer to a lock object or a direct representation of the lock. - *Array Length:* Every array object provides a length field that contains the length (number of elements) of the array. - *Garbage Collection Information:* Each Java object has associated information used by the memory management system. Usually this consists of one or two mark bits, but this could also include some combination of a reference count, forwarding pointer, etc. - *Misc Fields:* In experimental configurations, the object header can be expanded to add additional fields to every object, typically to support profiling.
CLR SYNCBock index pretty complicated http://msdn.microsoft.com/en-us/magazine/cc163791.aspx TypeHandler + optional array length ( Which is not really header) Just found this paper discusses this Java Object Header Elimination for Reduced Memory Consumption in 64-bit Virtual Machines http://users.elis.ugent.be/~leeckhou/papers/TACO07.pdf There techniques have some overheads but typical speedup of 5-10% was observed up to 20% for sparse. Along with 15-20% heap reduction (up to 38%). Ben On Mon, Oct 21, 2013 at 5:42 AM, Jonathan S. Shapiro <[email protected]>wrote: > We've been talking here about single byte object headers, but on real > machines the object headers are measured in words. What's typically being > done with the other three bytes on a 32-bit machine? I should imagine that > primordial type codes are likely stored there, though that can be done in > the VTable. What else is that space used for? > > _______________________________________________ > bitc-dev mailing list > [email protected] > http://www.coyotos.org/mailman/listinfo/bitc-dev > >
_______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
