android性能优化和内存优化 android弱引用有哪些


1、Android内存管理机制 1.1 Java内存分配模型 【android性能优化和内存优化 android弱引用有哪些】先上一张JVM将内存划分区域的图
程序计数器:存储当前线程执行目标方法执行到第几行 。
栈内存:Java栈中存放的是一个个栈帧 , 每个栈帧对应一个被调用的方法 。栈帧包括局部标量表 ,
操作数栈 。
本地方法栈:本地方法栈主要是为执行本地方法服务的 。而Java栈是为执行Java方法服务的 。
方法区:该区域被线程共享 。主要存储每个类的信息(类名 , 方法信息 , 字段信息等)、静态变量 , 常量 , 以及编译器编译后的代码等 。
堆:Java中的堆是被线程共享的 , 且JVM中只有一个堆内存 , 主要存储对象本身及数组
1.2 Dalvik和ART介绍 Dalvik:Dalvik是Google公司自己设计用于Android平台的Java虚拟机 。它可以支持已转换为.dex格式的Java应用程序的运行 , .dex格式是专门为Dalvik应用设计的一种压缩格式 , 适合内存和处理器速度有限的系统 , Dalvik经过优化 , 允许在有限的内存中同时运行多个虚拟机实例 , 并且每一个Dalvik应用做为独立的Linux进程执行 , 独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭 。
ART:ART表示Android Runtime , Dalvik是依靠一个just-In -Time编译器去解释字节码 , 运行时编译后的应用都需要通过一个解释器在用户的设备上运行 , 这一机制并不是特别高效 , 但是能让应用更容易在不同的硬件和架构上运行 。ART则是完全改变了这种做法 , 在安装应用的时候就预编译字节码到机器语言 , 这一机制叫预编译 。在移除解释代码这一过程 , 应用程序执行将更有效率 , 启动速度更快 。
ART优点:
1.系统性能更高
2.应用启动速度 , 运行更快 , 体验更好 , 触感反馈更加及时 。
3.更长的电池续航能力
4.支持更低的硬件
ART缺点:
1.储存空间占用更大 。
2.应用安装时间更长 。
Dalvik与ART区别
1.Dalvik每次都要编译在运行 , art只会安装时启动编译
2.art占用的空间比Dalvik要大 , 就是用空间换时间
3.art减少编译 , 减少CPU使用频率 , 使用明显改善电池续航
4.art启动 , 运行更快 , 体验更好 , 触感反馈更及时 。
1.3 为什么要进行内存优化 1.减少oom,提高应用的稳定性
2.减少卡顿 , 体验更好
3.减少内存占用 , 应用存活率更高
4.提前处理掉一些异常的隐患
2、Java内存回收算法 2.1判断Java中对象是否存活的算法 2.1.1 引用计数算法 堆内存的每个对象都有一个引用计数器 , 当对象被引用的时候 , 计数器 1 , 当引用失效时计数器-1 , 当计数器的值为0时 , 说明该对象没有被引用 , 就会被认为是垃圾对象 , 系统将会将其回收内存重新分配 。

推荐阅读