RFR: Bitmap slices commit/uncommit

Aleksey Shipilev shade at redhat.com
Thu Oct 5 12:20:04 UTC 2017


http://cr.openjdk.java.net/~shade/shenandoah/bitmaps-uncommit/webrev.01/

Following the better commit/uncommit memory management for heap memory under the regions, we can
also extend the same policy to the slices of our marking bitmaps. This saves significant chunk of
committed memory when idle, for example idle app with -Xmx100g:

=== Before:

Total: reserved=108444839KB, committed=3360035KB
       Java Heap (reserved=104857600KB, committed=16384KB)
                 (mmap: reserved=104857600KB, committed=16384KB)

              GC (reserved=3292058KB, committed=3292058KB)
                 (malloc=15258KB #12920)
                 (mmap: reserved=3276800KB, committed=3276800KB)

=== After

Total: reserved=108445029KB, committed=83937KB
       Java Heap (reserved=104857600KB, committed=16384KB)
                 (mmap: reserved=104857600KB, committed=16384KB)

              GC (reserved=3292158KB, committed=15870KB)
                 (malloc=15358KB #12921)
                 (mmap: reserved=3276800KB, committed=512KB)


The caveat is pages handling for bitmaps. We should enforce bitmap slices to be granular to page
size. 4K pages mean at least 4K*64 = 256K region size, which is exactly our lower boundary, but this
is asserted anyway. We also potentially give up large pages for bitmap allocations.

Testing: hotspot_gc_shenandoah, some footprint benchmarks

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list