• [Android Pro] Android libdvm.so 与 libart.so


    reference to ;http://blog.csdn.net/koffuxu/article/details/44780351

    Android libdvm.so 与 libart.so

     
    系统升级到5.1之后,发现system/lib/下面没有libdvm.so了,只剩下了libart.so。对于libart模式,从4.4就在Developer optins里面就可以手动选择,到5.1算是转正了。
     
    1,什么是libdvm,libart。
    Android KK里引入了ART虚拟机作为Dalvik虚拟机的替代,其主要目的是把Bytecode的翻译优化从运行时提前到安装时,以空间换时间,从而达到更流畅的用户体验。目前,KK中Dalvik仍是默认的虚拟机,但用户可以在Developer Option中切换到ART虚拟机。坊间传闻在下一版可能会转正。Dalvik和ART的实现分别位于libdvm.so和libart.so这两个库。两个可以同时build也可以只build一个,通过Makefile中的变量PRODUCT_RUNTIMES来控制(https://source.android.com/devices/tech/dalvik/art.html)。ART本质和Dalvik是一样的,是将Java的Bytecode翻译成Native code。它的主要的实现代码在AOSP的art目录下,另外在libcore/libart/下还有一部分Java层的实现。
     
    2,dex翻译成机器码,在libdvm模式下和Libart模式下是有区别的
    framework/native/cmds/installd/commands.c
    涉及到的命令有dex2oat和dexopt
    libdvm是运行时翻译;
    libart是在install的时候翻译。
     
    3,这些实现的逻辑在zygote的创建有关。
  • 相关阅读:
    Eclipse关于怎么调出web project
    RMI(远程方法调用)入门
    XSS攻击
    微信小程序
    java——IO流01
    06 python下
    06python上
    05python下
    05python上
    Nginx & Apache_网站用户认证
  • 原文地址:https://www.cnblogs.com/0616--ataozhijia/p/5678458.html
Copyright © 2020-2023  润新知