2014-01-17 59 views
4

Get<PrimitiveType>ArrayElements函数族被记录为复制数组,或将它们固定在适当位置(并且这样做可以防止压缩垃圾回收器移动它们)。它被记录为GetPrimitiveArrayCritical更安全,限制更少的替代方案。但是,我想知道哪些虚拟机和/或垃圾收集器(如果有的话)实际上引脚数组而不是复制它们。哪些VM或GC支持JNI锁定?

回答

7

旧的IBM JVM固定(1.4和之前 - 即:不是当前的IBM J9 JVM),但从那时起,他们没有。一般来说,JVM不喜欢固定,因为它真的会让复制垃圾收集器变得复杂,这是大多数生产JVM今天所做的。我不是100%最新的(即:最新的Java 7版本),但历史上HotSpot也没有(为了同样的代GC原因)。请注意:现在固定的JVM可能不是明天,反之亦然,所以您需要编写代码来处理它,就像基本Java库一样。