On 01/04/2015 13:37, Robert Stupp wrote:
:

Just want to understand ”the magic” here (sure, NIO is the way to go)…

Where’s the ”trick” to avoid GC pauses for socketWrite0 and similar methods?
Is it something hard coded like ”if JNI method is from jdk source tree”?

AFAIK there’s always a safe point w/ JNI calls. socketWrite0 is simply declared as ”JNIEXPORT void JNICALL Java_java_net_SocketOutputStream_socketWrite0” and I could not find anything in the source tree declaring ”socketWrite0” or ”SocketOutputStream” to be special (in jdk8u tree).
There isn't anything special here. In HotSpot then threads in JNI methods are considered to be a safepoint and so continue to execute even if the VM is brought to a safepoint, say for a stop-the-world GC. If the thread attempts to call back into VM or return from the native method then it will block until the safepoint completes. So nothing special for socketWrite0.

-Alan.

Reply via email to