gpt4 book ai didi

java - 调用 native 代码时 JVM 会停止吗?

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:13 27 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

关于java - 调用 native 代码时 JVM 会停止吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39209068/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com