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

Aleksey Shipilev shade at redhat.com
Tue Jun 5 15:46:27 UTC 2018


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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20180605/7fa4cabc/signature-0001.asc>


More information about the serviceability-dev mailing list