JNI规范提到了JDK 1.3中添加的不存在的方法

时间:2013-09-14 18:14:22

标签: java-native-interface

JNI spec at this location中有以下注释:

  

请注意

     

从JDK / JRE 1.1开始,程序员可以使用Get / ReleaseArrayElements函数来获取指向原始数组元素的指针。如果VM支持固定,则返回指向原始数据的指针;否则,制作副本。

     

从JDK / JRE 1.3开始引入的新功能允许本机代码获取指向数组元素的直接指针,即使VM不支持固定也是如此。

第二句话是令人费解的,因为我找不到那样做的方法。所有数组访问函数都有可能制作副本,甚至是GetPrimitiveArrayCritical()。规范中更易读的版本“Java™Native Interface:程序员指南和规范”在这里没有帮助,因为它是在JDK 1.3发布之前于1999年发布的。据我所知,在1.3中根本没有添加任何JNI方法 - 在规范中搜索字符串“1.3”只发现这个使用!

有没有人知道这个音符指的是什么?

1 个答案:

答案 0 :(得分:1)

Is there any way to pass a Java Array to C through JNI without making a copy of it?。答案是 new 函数是 GetPrimitiveArrayCritical()。它不保证不复制,但不需要固定来提供访问。

对链接问题的评论也是相关的:DirectBuffer 保证在任何VM上提供就地访问。