» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


 39 123
发新话题
打印

[其他] 安卓虚拟机是什么意思?

引用:
原帖由 KARUTO 于 2017-7-1 00:51 发表
posted by wap, platform: iPhone
Dalivk 本身就有jin 啊,执行层真的效率不行,art 编译并没有多大改变,而且art编译并不改变程序结构,本质还是要调用runtime

ART会把apk的代码编译成二进制程序,但是光有这个 ...
你概念不对了。
不要把runtime定义为低效,iOS底层也是runtime,oc是动态语言,在调用时会通过runtime转换成c的。


TOP

引用:
原帖由 wangmax 于 2017-7-1 09:49 发表


你概念不对了。
不要把runtime定义为低效,iOS底层也是runtime,oc是动态语言,在调用时会通过runtime转换成c的。
runtime优点是方便,编程效率高执行效率低,而且JRE在runtime里都算效率极低的,主要还是java的低效。把art理解成直接转汇编那就太扯淡了…



TOP

posted by wap, platform: iPhone
槽点很多嗯。

ART本质上仍然是一个Java虚拟机。它所支持的Dalvik指令集跟之前Dalvik VM所支持的一样,而该指令集是JVM指令集的一种机械映射,两个指令集之间高度对应。

ART当然还支持JNI。它对JNI的支持主要在源码的runtime/jni_*文件里实现,例如 runtime/jni_internal.cc。

ART虽然主要通过AOT编译支持Java的运行,但仍然带有解释器。
ART会自动选择一部分Java方法使用AOT编译的方式,在程序执行前就编译生成好相应的机器码,到真的运行时只需要执行那些机器码即可;但是没有被选上做AOT编译的Java方法则仍然需要由解释器来执行。
解释器的实现在 runtime/interpreter。最近还多了个用汇编写的优化版解释器,在 runtime/interpreter/mterp ,本质上就是把Dalvik VM的汇编写的解释器移植到了ART上。
另外ART其实从一开始就有计划支持JIT编译,只是最初发布的时候还没做到这块。现在的代码已经开始有一些初步实现了,其接口代码在 compiler/jit 。

至于ART上能不能用Java以外的编程语言,基本上原本Dalvik支持什么ART就支持什么——不想要Java的话其它JVM语言许多都能行,Groovy、Clojure、Scala啥的嗯。


TOP

posted by wap, platform: iPhone
安卓从其诞生起就赋予了虚拟机的伟大基因,与生俱来的东西怎么可能丢弃?个别安卓爱好者可不要数典忘祖啊。

TOP

posted by wap, platform: iPhone
绕了半天弯子,安卓还是虚拟的
不知道何时来个效率更好的把它淘汰

TOP

posted by wap, platform: iPhone
反正效率就是低 一直靠硬件搭救

底层就是虚拟 只能砍掉再来

TOP

posted by wap, platform: Android
都叫虚片了,肯定是虚拟内存 虚拟机系列了

TOP

posted by wap, platform: Meizu 魅蓝2
虚片和很久以前说PS3虚拟内存的是一个人吗?

TOP

posted by wap, platform: Android
引用:
原帖由 @帝斯特罗  于 2017-7-2 10:37 发表
虚片和很久以前说PS3虚拟内存的是一个人吗?
这理解就百分之百准确了

TOP

 39 123
发新话题
     
官方公众号及微博