Performance and Memory Improvements in ART(Android O)

1.内存方面的优化

  • 通过JIT profile在compile程序时将经常使用的method放在一个page里(局部性原理),程序加载时也只加载经常使用的部分
Paste_Image.png
  • New Garbage Collector

concurrently compact前台和后台程序,region based,GC开始时会暂停一段时间,决定回收哪个region(source region,根据fragment percentage决定),扫描完程序的thread stack之后,程序thread继续运行。然后是copying phase,将reachable object 从source region拷贝到dest region,然后锁住source region,进行回收(reclaim)。

Paste_Image.png

为了防止在拷贝过程中,程序线程访问source region的object,由read barrier来拦截访问,同时把访问的object拷贝到dest region中,返回拷贝后的地址

Paste_Image.png

拷贝完成后,heap更加紧凑

Paste_Image.png

新的allocator

Paste_Image.png

2.Performance

  • Better inlining
Paste_Image.png
  • Code Sinking
Paste_Image.png
  • Class Hierarchy Analysis
Paste_Image.png
  • Loop Optimization
    找出Induction Variable
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 《深入理解Java虚拟机》笔记_第一遍 先取看完这本书(JVM)后必须掌握的部分。 第一部分 走近 Java 从传...
    xiaogmail阅读 5,144评论 1 34
  • 所有知识点已整理成app app下载地址 J2EE 部分: 1.Switch能否用string做参数? 在 Jav...
    侯蛋蛋_阅读 2,490评论 1 4
  • 本系列出于AWeiLoveAndroid的分享,在此感谢,再结合自身经验查漏补缺,完善答案。以成系统。 Java基...
    济公大将阅读 1,537评论 1 6
  • 根据阅读 《深入理解java虚拟机》 加上一点自己的理解。 JVM运行时数据区域 程序计数器:程序计数器是一个较小...
    zycisbg阅读 1,972评论 0 3
  • 写给家里的“大树” 爸爸,女儿想你了。 ...
    一叶一页阅读 252评论 0 1