从Java的字节码调用机器代码时是否有任何性能影响?由于机器代码是"非托管"的,并且它没有"意识到"Java的内部结构,这可能导致JVM的内部调度程序暂停或类似的东西?
我是Java的新手,所以也许这甚至不相关,请帮忙.
我知道在Erlang中他们遇到了这个问题,VM在调用机器代码时基本停止了.我希望Java不是这种情况.是吗?
运行本机代码的线程不会停止JVM.
一旦调用JNI方法,Java线程就会切换到_thread_in_native状态.在安全点操作期间不计算处于此状态的线程,即当发生stop-the-world事件(如垃圾收集)时,JVM不会停止这些线程.相反,本机状态的线程无法阻止JVM,除非它们执行JNI上行调用.当本机方法返回时,线程切换回_thread_in_Java状态.