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