首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >达尔维克JNI什么时候开始支持钉钉的?

达尔维克JNI什么时候开始支持钉钉的?
EN

Stack Overflow用户
提问于 2015-06-11 09:55:40
回答 2查看 153关注 0票数 0

支持固定从本机代码访问的Java对象看来,Android使用的是GetByteArrayElements和好友。但这种情况有多久了?换句话说,如果可能的话,我的应用程序也会避免在旧设备上复制吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-11 17:50:21

Dalvik从来没有移动物体的GC。我们做了必要的准备工作,比如显式地固定对象,但是在复制收集器的开发变得非常严肃的时候(2011年年中),所有的开发工作都转移到了Art上。

“全局引用”列表包含所有JNI全局引用。在早期,VM分发原始指针,因此任何对JNI可见的引用都需要固定,这意味着由本地或全局JNI参考的所有对象都是不可移动的。在ICS(?)发布时,Dalvik的JNI切换到间接引用,这意味着我们只需要锁定被显式固定为直接访问的原语数组。(如果您从链接到的更改返回日志中的一些提交,您可以看到一些正在进行的工作。)

间接引用代码在几年内没有推出,因为一些代码深入到Android框架的核心,这些代码假定JNI引用是唯一不变的值。复制-收集器的工作还没有开始,间接引用会导致轻微的性能损失,因此没有太多的动机来扰乱平台的核心。

票数 1
EN

Stack Overflow用户

发布于 2015-06-11 09:55:40

在浏览源代码时,JNI库显式地提到了2009年加码中的固定(所以Android2.1,API 7)。在那之前,看起来没有一个压缩的垃圾收集器,所以钉扎不会成为一个问题,但是这个库仍然维护着一个“全局引用”列表。

看来你很安全!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30777441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档