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

Jini George jini.george at oracle.com
Fri Jun 1 08:13:39 UTC 2018


<Adding serviceability-dev for the SA changes>.

Thank you very much, Aleksey, for making the SA changes. Some comments 
on those.

==> 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

==>  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.

==> 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.

==> 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.

==> It would be great if 
test/hotspot/jtreg/serviceability/sa/TestUniverse.java is enhanced to 
add the minimalistic test for EpsilonGC.

Thank you,
Jini.

On 5/31/2018 11:42 PM, Aleksey Shipilev wrote:
> Hi,
> 
> This is fourth (and hopefully final) round of code review for Epsilon GC changes. It includes the
> fixes done as the result of third round of reviews, all of them inside gc/epsilon or epsilon tests.
> 
> Webrev:
>    http://cr.openjdk.java.net/~shade/epsilon/webrev.08/
> 
> If we are good, I am going to push this with the following changeset metadata:
> 
>    8204180: Implementation: JEP 318: Epsilon A No-Op Garbage Collector
>    Summary: Introduce Epsilon GC
>    Reviewed-by: rkennke, ihse, pliden, eosterlund, lmesnik
> 
> Builds:
>      server X {x86_64, x86_32, aarch64, arm32, ppc64le, s390x}
>     minimal X {x86, x86_64}
>        zero X {x86_64}
> 
> Testing: gc/epsilon on x86_64
> 
> Thanks,
> -Aleksey
> 


More information about the serviceability-dev mailing list