This issue will track the work to convert ClassLoader finalizer to use phantom reference to unload native library.
An earlier prototype uncovers an issue related to JNI_FindClass that is called during JNI_OnUnload that resurrects the caller class which has been GC'ed.
I think JNI FindClass should not be called during JNI_OnUnload . This would require further investigation, for example, whether it's possible to prohibit JNI_FindClass is called during JNI_OnUnload (to avoid resurrecting the caller's class). Also might be useful to gather some data to determine how high the compatibility risk is for JNI_FindClass not to work in JNI_OnUnload.