当前位置: 首页 > news >正文

下载手机软件的app/武汉seo技术

下载手机软件的app,武汉seo技术,什么是优化珍珠,网站建设小江网页设计Android 4.4提供了一种与Dalvik截然不同的运行环境ART(Android runtime)支持,ART源于google收购的Flexycore的公司。ART模式与Dalvik模式最大的不同在于,启用ART模式后,系统在安装应用的时候会进行一次预编译,将字节码转换为机器语言存储在本…

  Android 4.4提供了一种与Dalvik截然不同的运行环境ART(Android runtime)支持,ART源于google收购的Flexycore的公司。ART模式与Dalvik模式最大的不同在于,启用ART模式后,系统在安装应用的时候会进行一次预编译,将字节码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。这种编译的方式与c++,c语言编译方式蛮像。

  虚拟机切换设置

  Settings> Developer Options> Select Runtime

ART优点     
   1、系统性能的显著提升。     
   2、应用启动更快、运行更快、体验更流畅、触感反馈更及时。     
   3、更长的电池续航能力。
   4、支持更低的硬件。


ART缺点    
  1、更大的存储空间占用,可能会增加10%-20%。
  2、更长的应用安装时间。

Dalvik虚拟机性能优化
     1、DEX代码安装时或第一次动态加载时odex化处理。
     2、Android2.3版本提供了JIT机制提升性能;

      JIT(Just-In-Time),用来在运行时动态地将执行频率很高的dex字节码编译成本地机器码,然后再执行。通过JIT,就可以有效地提高Dalvik虚拟机的执行效率。但是,应用每次运行的时候,部分字节码都需要通过JIT转换为机器码,降低了应用程序运行效率。而ART则是使用AOT进行处理(Ahead-Of-Time),所谓AOT是指在运行以前就把中间代码静态编译成本地代码,这就减去了JIT运行时的转换时间,因此,即使Dalvik采用了JIT,Dalvik总体性能还是不能与直接执行本地机器码的ART虚拟机相比。

AOT的编译器分两种模式:
  1. 在开发机上编译预装应用;
          C/C++开发应用程序的时候,编译器直接就把它们翻译成目标机器码。
  2. 在设备上编译新安装的应用;
          在应用安装时将dex字节码翻译成本地机器码。

 art执行功能类图如下:

 

  通过上图我们可以总结出这样的结论:

  ①在JNI_CreateJavaVM()中,先是调用Create()函数来创建Runtime。Runtime是个单例,创建出来后紧接着调用Init()函数(/art/runtime/runtime.cc)。Init()函数会做很多初始化工作:解析参数,初始化Heap和JavaVMExt结构,线程和信号处理,创建ClassLinker等。

  ②接着调用ClassLinker的FindClass()查找目标类,其中涉及几个关键函数:LookupClass(),DefineClass(),InsertClass(),LoadClass()和LinkClass()。以下简要介绍下它们的主要功能:

  LookupClass()先在ClassLinker的成员变量class_table_中找指定类,找到就返回,找不到的话看是否要在image中找(class_loader为NULL且dex_cache_image_class_lookup_required为true)。如果要的话就调用LookupClassFromImage()在Image中进行查找,找到了就调用InsertClass()将找到的类放入到class_table_中方便下次查找。

  DefineClass()做了很多事情,包括了LoadClass(),InsertClass()和LinkClass()等动作。其中,LoadClass()调用LoadField()和LoadMethod()等函数把类中的域和方法数据从dex文件中读出来,填入Class结构。
  InsertClass()主要功能是把该类写入class_table_中方便下次查找。
  LinkClass()顾名思义,就是动态绑定虚函数和接口函数了。其调用结构:
  LinkSuperClass() // 检查父类。
  LinkMethods()
  LinkVirtualMethods() // 结合父类进行虚函数绑定,填写Class中的虚函数表vtable_。
  LinkInterfaceMethods() //处理接口类函数信息iftable_。注意接口类中的虚函数也会影响虚函数表,因此会更新vtable_。
  LinkInstanceFields() & LinkStaticFields() // 更新域信息,如域中的Offset和类的对象大小等。

  对于FindClass()来说,类大体有以下几种情况:内置类,启动类,系统类和其它。内置类是很基本的类,一般是初始化时预加载好的(如WellKnownClasses和JniConstants里那一坨),它们可以通过LookupClassFromImage()函数找到。启动类是在BOOTCLASSPATH里的类,由于它们是启动类,所以这里还没有ClassLoader。除掉前面的内置类,其余的通过DexFile::FindInClassPath()查找得到。再就是系统类和其它类,它们的加载过程是类似的,都是通过ClassLoader的loadClass方法,区别在于前者通过特殊的SystemClassLoader进行加载。举例来说,对于一个还没被加载过的启动类,一般流程是这样的:

http://www.lbrq.cn/news/1357327.html

相关文章:

  • 展示型网站建设价格/怎么推广一个网站
  • 网站怎么做cp备案号/一个完整的产品运营方案
  • 做传感器交易的网站/如何在网站上推广自己的产品
  • 建筑工地网站有哪些/购买链接怎么买
  • 不同的网站 做301/网页设计排版布局技巧
  • 建设商务公司网站/大作设计网站
  • 揭阳 网站建设/视频号怎么推广流量
  • 怎么建网站手机版/北京seo顾问外包
  • 廊坊市做网站/什么是营销渠道
  • 做网站数据库怎么整/西安网站建设维护
  • 网站开发个人简介范文/域名解析ip
  • 网站开发服务承诺书/推广员是做什么的
  • 武汉新闻网/网站首页的优化
  • asp网站开发人员招聘/如何申请一个网站域名
  • 大访问量的网站怎么做优化/网站接广告平台
  • 网站建设基本流程心得/网络营销的基本流程
  • 深圳品牌网站设计推广/网站设计与网页制作
  • 平台网站怎么做的好/b站怎么推广
  • phpnow wordpress/网络推广优化
  • 史上最强大的搜索神器/seo整站优化多少钱
  • 做相册网站/网络营销的手段有哪些
  • 目前最好的免费网站/哈尔滨seo推广优化
  • 聊城冠县网站建设/三叶草gw9356
  • 化州网站建设/网络营销特点
  • 深圳网站建设 贴吧/百度收录快速提交
  • 海口模板建站平台/真实有效的优化排名
  • 重庆市建设工程造价站/网络推广怎么找客户资源
  • 网站建设公司yu/电商网站卷烟订货流程
  • 辽宁做网站和优化哪家好/免费线上培训平台
  • 高端网站制作价格/营销型网站建设企业
  • 组合期权:跨式策略
  • 【运维进阶】DHCP服务配置和DNS域名解析
  • 力扣106:从中序与后序遍历序列构造二叉树
  • NLP自然语言处理 02 RNN及其变体
  • TCP协议与UDP协议
  • 2.4- WPF中非 UI 线程上安全地更新 UI 控件方法