• 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启动过程

  • 相关阅读:
    JAVA中使用FTPClient上传下载
    js 计算题
    js 中的call apply
    js闭包、原型、继承、作用域
    jQuery中.bind() .live() .delegate() .on()的区别
    Javascript中String、Array常用方法介绍
    常用函数
    事件委托,阻止默认事件
    【探讨】javascript事件机制底层实现原理
    css 垂直水平居中
  • 原文地址:https://www.cnblogs.com/mickeyontheway/p/3552130.html
Copyright © 2020-2023  润新知