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