2014-01-17 58 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庫一樣。