ARTIntroduction.pptxVIP

  • 27
  • 0
  • 约9.91千字
  • 约 49页
  • 2016-11-29 发布于重庆
  • 举报
ARTIntroduction

ART Introduction Over ViewART OverViewART的优点跑分上的提升ART运作原理概述解释执行AOT(Ahead-Of-Time)执行Fork进程的过程32位or64位Fork process类的加载及方法调用Oat文件生成及格式类的加载JNI方法及OAT方法的调用常见问题Heap管理(memory分配及回收)分配器回收器分配器及回收器的选择APPENDIX发 生NE时,需要提交的Log发生OOM时,抓取hprofWhy we need ART随着硬件水平的不断发展,随着人们对高performance 的需求,DVM的不足日益突出,促使ART的诞生。DVMART1.逐条Dex指令解释 ?执行效率低2.GC suspend时间长3.申请memory时线程竞争4.Memory碎片化严重1.采用AOT技术,运行时执行Locale Code ?执行效率高2. GC suspend时间短3. Memory碎片化轻Before LART在跑分上的提升ART运作原理Android对Java的运作流程解释执行Dex代码源代码指令识别实作部分取指令AOT执行直接拷贝了两个寄存器的值,省去了中间的跳转、取指令等操作汇编代码模式选择Art默认以本地模式执行,也可以解释模式执行如下情况以解释模式执行通过属性配置dalvik.vm.execution-modeint:portableint fastint:jitJNI方法、抽象方法、proxyClassproxyClass是Java机制的动态 代理所生成 的类由于虚拟机的相关属性都是在首次创建的时候读取的,因此改变了属性之后,需要重启android。可以直接通过开关机的方式,可以通过如下的adb 命令实现:adb shell stopadb shell startFork进程的过程Zygote的启动App_process申请heap(main space)加载space(image space)构建分配器及回收器创建JNI环境读取相关property创建虚拟机环境(ART)Preload class加载zygoteinit的类Start system serverWait for connection fork process退出32位or64位在64位上面可以既运行64位的zygote也可以运行32位的zygote,可以通过ro.zygote进行配置ro.zygote的值Zygote指令集System server 指令集套接字名字zygote64Zygote 6464zygotezygote32Zygote3232zygotezygote64_32zygote64, zygote3264Zygote64-zygoteZygote32-zygote_secondaryzygote32_64Zygote32,Zygote6432Zygote64- zygote_secondaryZygote32-zygoteFork processFork process都是通过system server的AMS向zygote请求zygote32APP32FORK32bit PkgMsAMSProcessget abiabiFORKZygote 64APP6464bit PMS根据一定规则确定一个APP应该运行32位还是64位Start process时,会依据不同的ABI将请求发给对应的zygote类的加载及方法调用Oat文件的生成当系统检测到APP对应的dex文件还没有对应的odex文件和其对应,此时会通过dex2oat进行AOT操作,生成OAT文件。所生成的文件位于/data/dalvik-cache/inst目录下:查看oat文件中的内容,可以通过Android提供的oatdump进行:OAT文件的格式OAT文件本质是一个ELF文件,但文件结构不同于一般的ELF文件。HeaderRaw dex filesrodataOat classesSections/Segmentsoatexec类方法的本地方法指令结束的标志Oat lastwordSection HeaderRodata区的格式如右边的格式所示Instructionsetdexfilecountdex_file_location_sizedex_file_location_datadex_file_checksumdex_file_offsetmethods_offsets_pointer………………methods_offsets_pointerDexFileInfosDexFile……DexFileStatusTypeOatMethodOffsetsOat class………Oat ClassOatMethodOff

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档