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

  • 相关阅读:
    进程管理
    linux进程间的通信方式
    linux进程调度的算法
    安装haroopad
    SAE部署Java应用
    Jetty 8.1 安装 运行 部署
    javaweb学习总结(五)——Servlet开发(一)
    eclipse打war包
    Java基础学习总结——Java对象的序列化和反序列化
    Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置
  • 原文地址:https://www.cnblogs.com/mickeyontheway/p/3552130.html
Copyright © 2011-2022 走看看