6-bit age field for 64-bit vms

Paul Hohensee Paul.Hohensee at Sun.COM
Mon Oct 19 19:44:16 UTC 2009


Right now, the object age field is 4 bits wide for both 32 and 64-bit vms.
It used to be 5 bits until we took away a bit for biased locking in 5u6.
I'd like to bump it back up to 5 (or maybe even 6) bits for 64-bit vms,
since there's plenty of space in the mark word.  Doing so would
help applications that have objects that live a "medium" length of
time, esp. in conjunction with larger young gens that can be collected
quickly with enough hardware threads.

This looks pretty easy to do.  Using LP64_ONLY and NOT_LP64, just
change the age field width to 5 in markOop.hpp and the default values
for MaxTenuringThreshold and IntialTenuringThreshold in globals.hpp
back to 31 and 15 respectively for 64-bit.

Doing this makes it harder (than it already is) to compress the mark word
down to 32-bits when using compressed pointers, but that's already a tough
problem which doesn't get tougher with this change.

Comments?

Thanks,

Paul




More information about the hotspot-gc-dev mailing list