6-bit age field for 64-bit vms
Paul.Hohensee at Sun.COM
Mon Oct 19 12:44:16 PDT 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.
More information about the hotspot-gc-dev