java - 哪些 VM 或 GC 支持 JNI 固定?

标签 java java-native-interface

Get<PrimitiveType>ArrayElements函数族被记录为复制数组或将它们固定到位(并且这样做可以防止压缩垃圾收集器移动它们)。它被记录为比 GetPrimitiveArrayCritical 更安全、限制更少的替代方案.但是,我想知道哪些 VM 和/或垃圾收集器(如果有的话)实际固定数组而不是复制它们。

最佳答案

较旧的 IBM JVM 已固定(1.4 及更早版本 - 即:不是当前的 IBM J9 JVM),但从那时起,它们就没有了。一般来说,JVM 不喜欢固定,因为它确实会扰乱复制垃圾收集器,而这正是当今大多数生产 JVM 所做的事情。我不是 100% 最新的(即:最新的 Java 7 构建),但历史上 HotSpot 也不是(出于相同的世代 GC 原因)。

请注意:今天固定的 JVM 明天可能不会固定,反之亦然,因此您需要编写代码来处理这两种方式,就像基本 Java 库所做的那样。

关于java - 哪些 VM 或 GC 支持 JNI 固定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21175443/

相关文章:

java - 查找类名冲突和 jar 文件版本差异和冗余

java - 符号 ' 出现意外错误

java - 安卓数据绑定(bind) : Cannot resolve symbol

java - 没有状态的对象在发布时总是可见吗?

java - 为什么给定的哈希函数是一个很差的哈希函数?

IA 32 位平台上的 java.lang.UnsatisfiedLinkError : Can't load AMD 64-bit . dll

android - 如何使 native 库可选

java - 制作系统应用时无法加载.so库文件

java - 我的 android 代码可以在 Android 2.2 上成功运行,但是不能在 Android 4.2.2 上运行

Java、64 位、JNI - 与 .NET CLR 相比