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版本?