RFR (round 4), JEP-318: Epsilon GC

Jini George jini.george at oracle.com
Thu Jun 7 05:19:28 UTC 2018


Thanks for making the changes, Aleksey. The changes look good.

Thanks,
Jini.

On 6/5/2018 9:16 PM, Aleksey Shipilev wrote:
> Hi Jini,
> 
> Thanks for taking a look, see comments inline.
> 
> On 06/01/2018 10:13 AM, Jini George wrote:
>> ==> share/classes/sun/jvm/hotspot/oops/ObjectHeap.java
>>
>> 444        liveRegions.add(eh.space());
>>
>> We would need to add an object of type 'Address' to the liveRegions list, instead of type
>> VirtualSpace. Not doing so results in exceptions of the following form from the compare() method for
>> various clhsdb commands like 'jhisto':
>>
>> Exception in thread "main" java.lang.ClassCastException:
>> jdk.hotspot.agent/sun.jvm.hotspot.memory.VirtualSpace cannot be cast to
>> jdk.hotspot.agent/sun.jvm.hotspot.debugger.Address
> 
> Oh, I see! Fixed:
>    http://hg.openjdk.java.net/jdk/sandbox/rev/d999bdb8173c
> 
> 
>> ==>  share/classes/sun/jvm/hotspot/oops/ObjectHeap.java
>>
>> 445     } else {
>> 446        if (Assert.ASSERTS_ENABLED) {
>> 447           Assert.that(false, "Expecting GenCollectedHeap, G1CollectedHeap, " +
>> 448                       "or ParallelScavengeHeap, but got " +
>> 449                       heap.getClass().getName());
>> 450        }
>> 451     }
>>
>> * Please add EpsilonGC also to the assertion statement.
> 
> I prefer to change it to non-GC-specific message as Per suggested:
>    http://hg.openjdk.java.net/jdk/sandbox/rev/5cd17d3d3f83
> 
> 
>> ==> share/classes/sun/jvm/hotspot/tools/HeapSummary.java
>>
>> The run() method would need to handle Epsilon GC here to avoid the Unknown CollectedHeap type error
>> with jhsdb jmap --heap.
> 
> Right, implemented in both places, run() and detectGCAlgo():
>    http://hg.openjdk.java.net/jdk/sandbox/rev/b20a56352d78
> 
> 
>> ==> share/classes/sun/jvm/hotspot/HSDB.java
>>
>> In  showThreadStackMemory(), we have:
>>
>> 1101                           }
>> 1102                         } else if (collHeap instanceof ParallelScavengeHeap) {
>> 1103                           ParallelScavengeHeap heap = (ParallelScavengeHeap) collHeap;
>> 1104                           if (heap.youngGen().isIn(handle)) {
>> 1105                             anno = "PSYoungGen ";
>> 1106                             bad = false;
>> 1107                           } else if (heap.oldGen().isIn(handle)) {
>> 1108                             anno = "PSOldGen ";
>> 1109                             bad = false;
>> 1110                           }
>> 1111                         } else {
>> 1112                           // Optimistically assume the oop isn't bad
>> 1113                           anno = "[Unknown generation] ";
>> 1114                           bad = false;
>> 1115                         }
>> 1116
>>
>> We would need to add the case of collHeap being an instanceof EpsilonHeap too. It would display
>> "Unknown generation" while viewing the stack memory for the Java threads otherwise.
> 
> Right, fixed:
>    http://hg.openjdk.java.net/jdk/sandbox/rev/f26c4a196a15
> 
> 
>> ==> It would be great if test/hotspot/jtreg/serviceability/sa/TestUniverse.java is enhanced to add
>> the minimalistic test for EpsilonGC.
> 
> Right:
>    http://hg.openjdk.java.net/jdk/sandbox/rev/c559de946c7d
> 
> This still passes gc/epsilon and serviceability/sa tests.
> 
> -Aleksey
> 


More information about the hotspot-gc-dev mailing list