ART Improvement in Android N

Android N 取消了AOT(Ahead of Time)编译,回归到了JIT(Just in Time)和AOT混合的编译模式。

同时采用Profile Guided Compilation

Paste_Image.png

JIT记录程序运行的profile,在手机charge和idle时,会进行AOT编译

Paste_Image.png

程序被解释运行时,JIT会kick in,周期性生成profile文件,当手机空闲时,profile guided compilation开始工作,生成二进制文件,取代原来的app code。

Paste_Image.png

profile记录的信息包括

  • hot methods: 执行次数,是否在UI线程上执行

  • 影响启动的class

  • code是否被其他应用share(full compilation)

Paste_Image.png

系统启动时会启动AOT compilation daemon,当Device idle时会进行相应的编译

Paste_Image.png

不同的场景有不同编译策略

Paste_Image.png

AOT编译时,会将启动时使用类编译成pre-initialized class,然后生成Application image,在ClassLoader创建时加载进内存。

Android N里,unreachable classloader 和 class可以被GC。之前的版本是会一直驻留在程序内存中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 最近参加了华为方舟的Workshop,从编译到Runtime都有了一些体会,并且对于虚拟机的运行也有了一些了...
    None_Ling阅读 4,831评论 0 7
  • 一. java平台的虚拟机Jvm 1. jvm的作用 Java语言的一个非常重要的特点就是与平台的无关性(跨平台性...
    大鹏的鹏阅读 1,196评论 0 6
  • 前言 许多从windows系统转过来的开发者可能不太适应苹果的iwork 办公室软件(包含 Pages, Numb...
    CoderP1阅读 5,356评论 1 0
  • 从混乱的梦境里被手机的信息提示音惊醒已然是王俊凯熟悉的状态,他打着哈欠看着发来的信息,一个是王源的,一个是助理的。...
    Camellia小草莓阅读 269评论 2 1
  • 清晨的班车是从家到单位 吃完了早饭就在车里睡 暴雪或是风吹 我都无所谓 只要坐上班车 就是到单位 采购有制度管他谁...
    仆算子阅读 291评论 0 0