RFR: 8215451: JNI IsSameObject should not keep objects alive

David Holmes david.holmes at oracle.com
Mon Dec 17 01:48:53 UTC 2018


Hi Per,

On 15/12/2018 8:41 pm, Per Liden wrote:
> 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.

I don't understand. Does this:

   oop a = JNIHandles::resolve(r1);

create some kind of permanent life reference ??

Thanks,
David

> 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