*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

Reply via email to