RFR: 8215451: JNI IsSameObject should not keep objects alive

Per Liden per.liden at oracle.com
Sat Dec 15 10:41:29 UTC 2018


JNI IsSameObject should resolve the JNIHandles its comparing without 
keeping the objects they point to alive. Otherwise, checking if a jweak 
is reachable by doing IsSameObject(jweak, NULL) will be counter 
productive, as it will make sure that jweak stays alive.

This is currently only a problem when using ZGC, which does concurrent 
jweak processing.

This was found by the 
"test/hotspot/jtreg/serviceability/jvmti/HeapMonitor/MyPackage/HeapMonitorThreadTest.java" 
test, which keeps a list of jweaks, which it will periodically iterate 
over and do IsSameObject(jweak, NULL) to determine if any of them have 
been cleared. The end result is the these jweaks will never be cleared 
and the heap eventually gets full and an OOME is thrown.

Bug: https://bugs.openjdk.java.net/browse/JDK-8215451
Webrev: http://cr.openjdk.java.net/~pliden/8215451/webrev.0

/Per


More information about the hotspot-runtime-dev mailing list