加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

Android下一代操作系统 L 更迅速更安全

发布时间:2022-05-09 10:01:55 所属栏目:安全 来源:互联网
导读:Android L 运行界面 一,预先(Ahead-of-time)编译。Android应用开发时,生成的Dex文件包含Java的Byte Code。在Android L以前,默认用Dalvik虚拟机。应用运行时,Dalvik对Java Byte Code进行解释执行,或进行Junt-In-Time的编译。在Android L里,应用安装时,
         Android L 运行界面
 
         一,预先(Ahead-of-time)编译。Android应用开发时,生成的Dex文件包含Java的Byte Code。在Android L以前,默认用Dalvik虚拟机。应用运行时,Dalvik对Java Byte Code进行解释执行,或进行Junt-In-Time的编译。在Android L里,应用安装时,用系统工具dex2oat将安装包中的Dex文件编译为ELF格式的执行文件(.oat文件)。应用运行时直接执行二进制指令。
 
         二,优化垃圾回收(garbage collection)。垃圾回收主要有两种:(1)gc_concurrent。执行时,Dalvik会在本次gc的开始和结束时会短时间暂停代码的执行。(2)gc_for_alloc。执行时,会较长时间中断Java代码的运行。在ART里,执行gc_concurrent时,只会暂停代码一次。执行gc_for_alloc时,中断Java代码运行的时间大大缩小了。总体上讲,ART里垃圾回收占用的开销比Dalvik少50%以上。减少了垃圾回收时对应用带来的卡顿,使应用运行更流畅。
 
问题2. 对应用开发者来说,需要做什么适配工作以支持ART。比如重新编译,打包?
 
答:对绝大多数开发者来说,不需要。不论虚拟机是Dalvik还是ART,安装包里所包含的仍然是Dex文件。由Dex文件编译为二进制文件的工作是在应用安装时,由装在设备上的系统工具dex2oat完成的。
 
问题3. Android的应用在ART里运行后,开发者还能在Java层面进行调试吗?
 
答:可以。事实上,应用安装后,编译生成的.oat文件中,包含了原始的Dex文件。保留Dex文件有两个原因:一,需要Dex里的关于类的信息,以支持Java反射等操作。二,调试时,要用Dex里的调试信息。正由于这个原因,编译生成的.oat文件,大小是原始的Dex文件的两倍以上。
 
问题4. 用ART后,性能最终能提高多少?
 
答:取决于具体的应用。在Google I/O上,Google给的例子是提升两倍以上。
 
ART我们实际测试下来,性能提升在15%到80%之间。对于大量使用CPU的应用,性能提升比较明显。但如果应用程序的时间主要花在调用系统API,提升会小一些。因为很多系统API的代码主要在底层的.so里面。
 
问题5. ART在安全性上有没有提升?
 
答:ART和Dalvik相比,安全模型和基本机制没有变化。但ART有一些细节改进,对安全有帮助。比如:一,安装时对dex文件做了更严格的验证。二,纠正了Dalvik长期存在的一个对象模型的问题:一个类里的方法,如果没有加访问限制(即没有用Public,Private,Protected描述),Java规定是package-private方法,不在同一package的子类不能访问和重载。而Dalvik一直允许子类重载package-private的方法。ART里做了修改,行为与Java标准一致。

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!