Android NDK顯示爲support pinning down Java objects accessed from native code使用GetByteArrayElements
和朋友。但是這種情況多久了?換句話說,我的應用程序是否可以避免在舊設備上進行復制?Dalvik JNI何時開始支持固定?
0
A
回答
1
Dalvik從未有過移動物體的GC。我們做了必要的準備工作,比如明確固定對象,但是在複製收集器的開發越來越嚴重的時候(2011年中),所有開發工作都轉移到了Art。
「全局引用」列表包含所有JNI全局引用。在早期,VM發佈了原始指針,因此任何對JNI可見的引用都需要被固定,這意味着所有由本地或全局JNI引用引用的對象都是不可移動的。在ICS(?)版本中,Dalvik的JNI切換爲間接引用,這意味着我們只需鎖定顯式固定爲直接訪問的基元數組。 (如果您從鏈接的更改中取回日誌中的一些提交,可以看到一些work in progress。)
間接引用代碼由於某些代碼深度而未推出幾年在假定JNI引用的Android框架的核心是唯一不變的值。拷貝收集器的工作還沒有開始,間接的參考引起了輕微的性能損失,所以沒有太多的動機來弄亂平臺的腸子。
1
看了看源代碼,JNI庫在2009年明確提到code added(所以Android 2.1,API級別7)。 Before that,它看起來好像沒有壓縮垃圾收集器,所以固定不會成爲問題,但是庫仍然維護着一個「全局引用」列表。
所以看起來你很安全!
相關問題
- 1. MySQL何時開始支持XML功能?
- 2. 哪些VM或GC支持JNI鎖定?
- 3. SDK是否支持JNI?
- 4. XE5,JNI - 我如何添加(安裝)JNI支持到Delphi XE5
- 5. WSO2 API管理何時開始支持OpenAPI3.0(Swagger 3.0)?
- 6. oracle何時開始支持「top」:select top? PRODUCT的p2_.PRODUCT_ID?
- 7. XSLFO是否支持固定佈局?
- 8. 位置固定支持父母絕對
- 9. 保持固定線程數始終爲
- 10. 以UNICODE支持的WINAPI編程開始
- 11. 如何讓vim在開始時自動寫入固定註釋?
- 12. Android中的固件支持
- 13. 不受支持的JNI版本0xFFFFFFFF
- 14. 在開始時使用固定號碼的自定義主鍵
- 15. 不支持給定路徑的格式。剛開始使用C#
- 16. Android - Renderscript支持庫 - 加載RS jni庫時出錯
- 17. 使用CakePHP開發自定義CMS,支持多語言支持
- 18. 開源IDE支持Git支持
- 19. 在活動開始時使AdView具有固定大小
- 20. 開始圖像從固定的服務器時間調換javascript
- 21. 固定到開始菜單時應用程序標題丟失
- 22. 如何開始使用Monticello的git/github支持?
- 23. 固定定位浮動菜單以支持移動瀏覽器
- 24. ElasticSearch支持是否定義了固定的排名策略?
- 25. Android Dalvik,支持一般的Java Swing,Awt,Swt,Gwt,SwingX,ApachePivot?
- 26. Dalvik(Androids JVM)支持熱代碼替換嗎?
- 27. WPF - VS2010的C#編譯器何時開始支持編譯XAML標記?
- 28. 從固定的開始時間計算不同時間點的經過時間
- 29. 如何加載庫在機器人,使用JNI支持
- 30. 如何檢索設備中受支持的android JNI版本?