--- old/src/hotspot/share/gc/g1/g1HeapTransition.cpp 2019-06-04 13:17:01.836651257 -0700 +++ new/src/hotspot/share/gc/g1/g1HeapTransition.cpp 2019-06-04 13:17:01.576651266 -0700 @@ -32,6 +32,7 @@ G1HeapTransition::Data::Data(G1CollectedHeap* g1_heap) { _eden_length = g1_heap->eden_regions_count(); _survivor_length = g1_heap->survivor_regions_count(); + _retained_length = g1_heap->survivor()->retained_length(); _old_length = g1_heap->old_regions_count(); _archive_length = g1_heap->archive_regions_count(); _humongous_length = g1_heap->humongous_regions_count(); @@ -96,15 +97,21 @@ DetailedUsageClosure blk; _g1_heap->heap_region_iterate(&blk); usage = blk._usage; - assert(usage._eden_region_count == 0, "Expected no eden regions, but got " SIZE_FORMAT, usage._eden_region_count); - assert(usage._survivor_region_count == after._survivor_length, "Expected survivors to be " SIZE_FORMAT " but was " SIZE_FORMAT, - after._survivor_length, usage._survivor_region_count); + assert(usage._eden_region_count == after._retained_length, "Expected eden " SIZE_FORMAT " to be same as retained region " SIZE_FORMAT, + usage._eden_region_count, after._retained_length); + assert((usage._survivor_region_count == after._survivor_length - after._retained_length), + "Expected survivors to be " SIZE_FORMAT " but was " SIZE_FORMAT, + after._survivor_length - after._retained_length, usage._survivor_region_count); + assert(usage._eden_region_count + usage._survivor_region_count == after._survivor_length, "Sum (" SIZE_FORMAT ") of eden (" + SIZE_FORMAT ") and survivors (" SIZE_FORMAT ") should be same as expected survivor count (" SIZE_FORMAT ")", + usage._eden_region_count + usage._survivor_region_count, + usage._eden_region_count, usage._survivor_region_count, after._survivor_length); assert(usage._old_region_count == after._old_length, "Expected old to be " SIZE_FORMAT " but was " SIZE_FORMAT, - after._old_length, usage._old_region_count); + after._old_length, usage._old_region_count); assert(usage._archive_region_count == after._archive_length, "Expected archive to be " SIZE_FORMAT " but was " SIZE_FORMAT, - after._archive_length, usage._archive_region_count); + after._archive_length, usage._archive_region_count); assert(usage._humongous_region_count == after._humongous_length, "Expected humongous to be " SIZE_FORMAT " but was " SIZE_FORMAT, - after._humongous_length, usage._humongous_region_count); + after._humongous_length, usage._humongous_region_count); } log_info(gc, heap)("Eden regions: " SIZE_FORMAT "->" SIZE_FORMAT "(" SIZE_FORMAT ")",