繁体   English   中英

调用本机代码时JVM是否会停止?

[英]Does JVM halt when calling native code?

从Java的字节码调用机器代码时是否有任何性能影响? 由于机器代码是“非托管”的,并且它没有“意识到”Java的内部结构,这可能导致JVM的内部调度程序暂停或类似的东西?

我是Java的新手,所以也许这甚至不相关,请帮忙。

我知道在Erlang中他们遇到了这个问题,VM在调用机器代码时基本停止了。 我希望Java不是这种情况。 是吗?

运行本机代码的线程不会停止JVM。

一旦调用JNI方法,Java线程就会切换到_thread_in_native状态。 在安全点操作期间不计算处于此状态的线程,即当发生stop-the-world事件(如垃圾收集)时,JVM不会停止这些线程。 相反,本机状态的线程无法阻止JVM,除非它们执行JNI上行调用。 当本机方法返回时,线程切换回_thread_in_Java状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM