RFR: JDK-8199620: Support for JNI object pinning
Roman Kennke
rkennke at redhat.com
Wed Mar 14 18:13:51 UTC 2018
Currently, the Get/Release*Critical() family of functions use the
GCLocker protocol to ensure that no JNI critical arrays are in use when
a GC pause is entered.
Some GCs may instead want to use object pinning and guarantee that the
object does not move. For example, this is easy to do with region-based
GCs (G1, Shenandoah, ZGC) by simply not including regions with pinned
objects in the collection set.
The implementation/API that I'm proposing is fairly simple: add two
methods oop pin_object(oop) and void unpin_object(oop) to CollectedHeap,
and call them from JNI's Get/Release*Critical methods.
This approach has been working perfectly fine since a long time in
Shenandoah.
Bug:
https://bugs.openjdk.java.net/browse/JDK-8199620
Webrev:
http://cr.openjdk.java.net/~rkennke/8199620/webrev.00/
What do you think?
Thanks, Roman
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20180314/94e4d3aa/signature.asc>
More information about the hotspot-gc-dev
mailing list