▸ Authors of jPDM, a performance diagnostic model ▸ Co-founded jClarity ▸ Building the smart generation of performance diagnostic tooling ▸ Bring predictability into the diagnostic process ▸ Martijn über community person (delayed Java 9 for you all) ▸ Kirk Co-founded JCrete ▸ The hotest unconference on the planet ▸ Java Champion(s) OUR MARKETING SLIDE
a single contiguous region at JVM startup ▸Divide into 2048 to 4095 regions ▸ heap size is specified with -mx ▸ regions size is one of 1, 2, 4, 8, 16, or 32m ▸-XX:G1HeapRegionSize=<n> ▸example for -mx10G Region size = 10240M/2048 = 5m Number of regions = 10G/4m = 2560 regions
of parallel and serial phases jClarity 1. Place all young gen regions into a CSet 2. Calculate a root set for the CSet 3. Mark all live data in the CSet 4. Evacuate all live data to the ‘to’ space The ‘to’ space regions allocated from the free region list 5. Place eden regions back on free list 6. Ergonomics recalculates number of regions to allocate to Eden
of parallel and serial phases ▸Place all young gen regions into a CSet ▸Calculation a root set for the CSet ▸Mark all live ▸Evacuate all live to survivor regions allocated from the free region list ▸Place eden regions back on free list ▸Ergonomics recalculates number of regions to allocate to Eden jClarity Time complexity!!!!
or pay me later ▸ Allocator can allocate fast ▸The collector has more work ▸ Longer pause times ▸ Allocators help the collector ▸Shorter pause times ▸Slower application throughput jClarity
an RSet ▸ Tracks pointers from Tenured regions into target region ▸ Requires a write barrier ▸ Has an associated space complexity ▸Complex implemetation solves this ▸RSet maintenance costs are non-linear to size of the region ▸ Mutations place an unwanted burden on the mutator threads jClarity
working Number of RSets that can be processed run less than 10% of the pause time goal All refinement threads are working G1UpdatingPauseTimePercent > 10% Application threads are involved in RSet refinement. Slow mutation rates which acts as back pressure jClarity
contains all eden and survivor regions ▸a mixed collection will add a subset of tenured regions to the CSet ▸ CSet size is controlled by ▸the pause time goal (200ms default) ▸minimum collection percentages (10%) ▸other factors jClarity
Region (cont) jClarity ▸Allocation that is 1/2 the size of a region ▸Fragmented heaps may not have enough space to satisfy an allocation ▸ dip into reserved space ▸ trigger a young gen collection with and initial-mark ▸commit more regions to the heap ▸ worst case can trigger a Full GC
One ▸ Body Level Two ▸ Body Level Three ▸ Body Level Four ▸ Body Level Five Java Performance Tuning Workshop www.jClarity.com @kcpeppe @karianna @jclarity