Request for review: JDK-8009561 NPG: Metaspace fragmentation when retiring a Metachunk

Mikael Gerdin mikael.gerdin at oracle.com
Wed Jun 5 14:04:38 UTC 2013


Hi,

Can I have some reviews of this small fix to the Metaspace memory 
allocation path.

Problem:
When a Metaspace allocation request cannot be satisfied by the current 
chunk the chunk is retired and a new chunk is requested. This causes 
whatever is left in the chunk to be effectively leaked.

Suggested fix:
Put the remaining memory in each chunk on the Metablock freelist so it 
can be used to satisfy future allocations.

Possible addition:
When allocating from the block free list, use 
FreeBlockDictionary<Metablock>::atLeast instead of 
FreeBlockDictionary<Metablock>::exactly and split the Metablock if it's 
large enough.

One might argue that this increases the fragmentation of the memory on 
the block free list but I think that we primarily want to use the block 
free list for small allocations and allocate from chunks for large 
allocations.

Webrev:
Only fix:
http://cr.openjdk.java.net/~mgerdin/8009561/webrev.0/

Incremental webrev for splitting blocks:
http://cr.openjdk.java.net/~mgerdin/8009561/webrev.0%2b/

Bug links:
https://jbs.oracle.com/bugs/browse/JDK-8009561
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8009561

Thanks
/Mikael



More information about the hotspot-gc-dev mailing list