Android知识综合梳理(大篇幅、大范围)

因为最近在全方位总结安卓知识,这篇文章目录和大纲有点乱,继续写下去篇幅会特别长。所以我重新列了一个大纲,大纲会逐渐丰富其内容,从虚拟机到类加载,从堆栈内存到数据结构,从ui到网络层,大纲里的每一个知识点我都会用一篇新文章详细概述,会附有超链接,大纲新地址是:https://blog.youkuaiyun.com/weixin_42802049/article/details/115542194。还请移步新大纲地址哦~~~

虚拟机

jvm

1. 加载过程:
1,A.java经过编译器编译,生成A.class字节码文件,多个class文件会被打包成jar文件
2,程序访问A这个类时,会通过ClassLoader类加载器将A.class加载到jvm的内存中

dalvik+JIT

1. 加载过程:
1,A.java经过编译器编译,生成A.class字节码文件
2,dx工具将class文件打包成dex文件
2. JIT(Just In Time Compiler):
即时编译策略,即动态编译
缺点:
	1,每次启动应用都要重新编译(没有缓存)
	2,所以运行时比较耗电

art+AOT

1. AOT(Ahead Of Time)
提前编译策略,即静态编译
缺点:
	1,应用首次安装和系统升级之后(需要重新编译)比较耗时
	2,编译后的文件占用更多的内存空间,缓存的结果
2. JIT和AOT的区别
无非就是空间换时间

内存

dalvik内存(即java内存)

heap(堆内存):线程共享区域

1. 存储数据类型
1,成员变量
	基本数据类型:其变量名及其数据值存放在堆内存中
   		-
	引用数据类型:对象存放在堆内存中,其变量名和地址值存放在栈中,该地址值指向所引用的对象
2,局部变量
	引用数据类型:对象存放在堆内存中,其变量名和地址值存放在栈中,该地址值指向所引用的对象
2. 内存释放
GC

stack(栈内存):线程私有区域

1. 存储数据类型
1,局部变量
	基本数据类型:其变量名及其数据值存放在栈内存中
	
疑问:局部变量中的基本数据类型都是存储在栈内存中吗?
	不是。
	int[] array=new int[]{1,2};
	由于new了一个对象,所以new int[]{1,2}这个对象是存储
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值