apangin/nalim:基于 JVMCI 的快速 Java 原生接口

22-10-18 banq

Nalim 是一个使用JVMCI(JVM 编译器接口)将 Java 方法链接到本机函数的库 。
与其他用于本地库访问的 Java 框架不同,nalim 不使用 JNI,因此不会产生与 JNI 相关的开销
使用 nalim 调用本机函数时:

  • 线程不会从in_Java状态切换到in_native状态再返回。
  • 不涉及内存障碍。
  • 没有创建JNI句柄。
  • 省略了异常检查和安全点检查。
  • 本地函数可以直接访问堆中的原始数组。

因此,与 JNI 相比,本机调用变得更快,尤其是在目标函数很短的情况下。从这个意义上说,nalim 类似于 JNI Critical Natives,但依赖于标准支持的接口。JNI Critical Natives在 JDK 16 中已被弃用,自 JDK 18 起已被[url=https://bugs.openjdk.org/browse/JDK-8258192]淘汰[/url],因此 nalim 可以作为替代品。

 

1