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