zoukankan      html  css  js  c++  java
  • android底层架构学习笔记

    丫的,爷搞企业安全的跑来搞android,被忽悠,那就既来之则安之吧,开始学习,大家勿喷。

    0x0 行外汉对android的理解

    android应用使用java来开发的,java代码在java虚拟机上运行,java虚拟机是基于栈执行的,其实是在运行期栈上对java字节码文件的解释执行,这个过程需要不断的进行读内存操作(读字节码文件),

    性能较高级语言要低很多,android的app的davik虚拟机是基于寄存器方式执行的,此外还引入了jit做热点代码块优化,直接将热点代码块转换为机器指令执行,以提高性能,但为什么只做“热点代码块”的优化呢?可否对所有的字节码(smali)进行jit,转换为字节码文件呢?答案是不可以的,有以下原因:

    1)jit后代码块膨胀,需要更多的存储空间。

    2)最整个程序做jit的是慢,在用户打开一个应用是对这个程序做jit,这个时间是用户无法忍受的(全部代码做jit适合于那种对打开程序到程序正常运行所需时间要求不是很高,且程序启动后运行时间很长的场景)

    每个android app运行在一个独立的虚拟机里面,其实就是一个独立的上下文环境,上下文中维护者对于的寄存器信息,pc信息,栈信息,等等。

    下面真正开始学习

    0X1 Android启动过程

  • 相关阅读:
    优秀的3D游戏开发系统和虚拟现实技术!
    C#反射实例(转)
    网易学院
    static 并发
    设计模式Strategy 策略模式
    1:统一建模语言UML轻松入门基本概念
    标准CSS 列表写法
    超级简单:ASP.NET Localization (本地化,多语言)
    js用escape()轻松搞定ajax post提交汉字的乱码问题
    认识.NET的集合
  • 原文地址:https://www.cnblogs.com/mickeyontheway/p/3552130.html
Copyright © 2011-2022 走看看