| |
| | Bidirectional Object Layout |
 | | When set to zero, the discovered reference is traced, when set to 1, the number of non-reference field words (encoded in the lock word itself, or in the virtual table on overflow) is used to find the starting point of the next instance. |
 | | In summary, using our bidirectional layout, a gc only accesses the following memory locations while tracing: reference fields and lock word, for all instances (objects and arrays), and at most three additional accesses for objects with many fields (virtual table pointer and two words in the virtual table itself). |
 | | The idea of using a bidirectional object layout (without grouping references) has been investigated[25,28] as a mean to provide efficient access to instance data and dispatch information in languages supporting multiple inheritance (most specifically C++). |
| www.usenix.org /event/jvm01/gagnon/gagnon_html/node12.html (1164 words) |
|