安卓考点脉络

【内存】

2018-02-24  本文已影响18人  小呀么小黄鸡

性能优化->虚拟机原理 怎么分析堆内存 内存泄露和内存溢出的原因 怎么做内存管理

JVM类加载机制
Java内存区域与内存溢出
垃圾回收算法
Android GC 原理探究

内存溢出(OOM)

Android关于OOM的解决方案
1、什么是OOM
指Out of memory(内存溢出),应用当前占用的内存加上我们申请的内存资源超过了虚拟机对该应用的最大内存限制就会抛出Out of memory异常

2、OOM相关概念

3、解决OOM
Bitmap相关

其他相关

内存泄漏

Android内存泄漏总结

1、Java中引起内存泄漏的主要原因

长生命周期的对象持有短生命周期对象的引用

2、Java内存分配策略

静态存储区:又称方法区,主要存储全局变量和静态变量,在整个程序运行期间都存在
栈区:方法体的局部变量会在栈区得到分配空间,并在方法执行结束后自动释放变量得到的资源
堆区:保存动态产生的数据,如:new出来的对象和数组,在不使用的时候由Java回收器自动回收

3、Android解决内存泄漏的例子

如何使用leakCanary

内存管理

1、Android内存管理机制

分配机制
管理机制

2、内存管理机制的特点

更少的占用内存
在合适的时候,合理的释放系统资源
在系统内存紧张的时候,能释放掉大部分不重要的资源
能合理的在特定生命周期中,保存或还原重要数据

3、内存优化方法

Service完成任务后应停止它,或用IntentService(因为可以自动停止服务)代替Service
在UI不可见的时候,释放其UI资源
在系统内存紧张的时候,尽可能多的释放非重要资源
避免滥用Bitmap导致内存浪费
避免使用依赖注入框架
使用针对内存优化过的数据容器
使用ZIP对齐的APK
使用多进程

JAVA内存区域

  1. 程序计数器
  2. Java虚拟机栈
  3. 本地方法栈
  4. Java堆
  5. 方法区
  6. 运行时常量池
  7. 直接内存

其它内存/JVM相关

Art和Dalvik的区别

ART代表Android Runtime,是google开发的执行效率更高更省电的替代运行时,其处理应用程序执行的方式完全不同于Dalvik。ART完全改变了这套做法,在应用安装的时候就预编译字节码到机器语言,这一机制叫Ahead-Of-Time(AOT)编译。在移除解释代码这一过程后,应用程序执行将更有效率,启动更快。
Dalvik是Google公司自己设计用于Android平台的Java虚拟机,是依靠一个Just-In-Time(JIT)编译器去解释字节码。开发者编译后的应用代码需要通过一个解释器在用户的设备上运行,这一机制并不高效,但让应用能更容易在不同硬件和架构上运行。它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik应用设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。

ART优点
系统性能的显著提升
应用启动更快、运行更快、体验更流畅、触感反馈更及时
更长的电池续航能力
支持更低的硬件
ART缺点
更大的存储空间占用,可能会增加10%-20%
更长的应用安装时间

上一篇下一篇

猜你喜欢

热点阅读