Android ART JVM中和机器码编译有关的小知识

栏目: Java · 发布时间: 6年前

借华为方舟编译器掀起的讨论的热潮,我来说下和 Android ART JVM 和编译有关的小知识。或许你看懂下面这些小知识,就能从另外一个方面明白方舟编译器为什么那么让人好奇了。

本文首发我的公众号:

Android ART JVM中和机器码编译有关的小知识

神农和朋友们的杂文集公众号。主要想记录自己、朋友、朋友的朋友们的一些关于coding、programing、程序人生方面的思考。有一些技术,有一些调侃,有一些反思,有一些自勉。

我从16年开始,花了近3年的时间对ART虚拟机做了一个稍微全面的源码分析(成果见我的新书《深入理解Android:Java虚拟机ART》京东销售地址 https://item.jd.com/12510921.html )。其中第六章就是专门讲从dex字节码如何编译成机器码。

Android ART JVM中和机器码编译有关的小知识

第六章的最后,我特意解释了,即使 java字节码编译成机器码,其运行也是离不开虚拟机的管控 ,这些机器码叫 managed code 。它们和非虚拟机管控运行的程序区别见下面几个图:

Android ART JVM中和机器码编译有关的小知识

虚拟机管控运行的机器码

虚拟机为什么要管控机器码的运行 呢?接着看下图

Android ART JVM中和机器码编译有关的小知识

Android ART JVM中和机器码编译有关的小知识

以上就是managed code和虚拟机的关系。

所以,方舟编译器说不用虚拟机了,具体是什么含义?另外,android app是从zygote fork出来的,zygote自己可是一个JVM,那APP是什么?

除此之外,根据 java 语言的特性, 某些数组越界的处理逻辑还要从机器码运行态退化为解释模式执行 (HDeoptimize处理)。来看图:

Android ART JVM中和机器码编译有关的小知识

下面是 一个触发HDeoptimize的 程序示例:

Android ART JVM中和机器码编译有关的小知识

从HDeoptimize可以看出,JVM是为Java语言本身关系及其紧密。

所以,方舟编译器对这种情况是怎么处理的?如果要符合Java的要求,那就不会完全是机器码执行了?或者说有更高级的办法?

等等等,还有很多谜团需有更进一步的解释。

简单来说,源码写成什么样的逻辑,无论是解释执行还是机器码执行都得按这个逻辑来执行。按华为方舟编译器介绍的那样,这是一个类似翻译的工作。再牛、再快的编译器, 如果翻译错了,就毫无价值

JVM、编译技术 属于基础关键技术,但感觉绝大部分开发并不真正了解它们。这种现象的原因有很多,可能比较关键的一个问题是没有合适的书籍。编译领域中的 龙书,虎书 很难。而能从JVM源码角度来介绍JVM的更是绝少有。

我们都希望基业长青。显然,基业长青离不开对基础技术的坚守.但是一方面我们也要降低入门门槛,让更多人有机会看到它,亲身接触到它,然后才是扩展和完善它。

对方舟编译器的看法:

1 很高兴华为能在编译技术这么底层基础技术上能让国人扬眉吐气。希望华为能把这个方舟编译器搞好,搞强大。

2 具体实施过程中,希望能服务好开发者。把真正牛的技术以更友好,更方便的形式提供给开发者慢慢把生态建立起来。

3 希望华为尽快能在技术上全面剖析和解释一下方舟。

4 评价一个编译器的好坏应该是有一套基准测试的 ,华为不妨亮出测试数据。


以上所述就是小编给大家介绍的《Android ART JVM中和机器码编译有关的小知识》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

引爆点

引爆点

【加】马尔科姆•格拉德威尔(Malcolm Gladwell) / 钱清、覃爱冬 / 中信出版社 / 2014-4 / 36.00元

《引爆点》是《纽约客》怪才格拉德威尔的一部才华横溢之作。他以社会上突如其来的流行潮为切入点,从全新角度探索了控制科学和营销模式。他认为,思想、行为、信息及产品常会像传染病暴发一样迅速传播。正如一个病人就能引起全城流感;几位涂鸦爱好者能在地铁掀起犯罪浪潮;一位满意而归的顾客还能让新开张的餐馆座无虚席;发起小规模流行的团队能引发大规模流行风暴。这些现象均属“社会流行潮”,它达到临界水平并爆发的那一刻,......一起来看看 《引爆点》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具