美文网首页
(二十九)内存管理面试问题

(二十九)内存管理面试问题

作者: lkmc2 | 来源:发表于2017-08-22 19:51 被阅读64次

一、内存管理机制概述

1.分配机制 :操作系统会为每一个进程分配一个合理的内存大小,从而保证每一个进程能正常的运行。而不至于内存不够使用,或者每个进程占用太多的内存。

2.回收机制 :在系统内存不足的时候,会有一个合理的回收而再分配内存资源的一个机制,从而保证新的进程能够正常运行。回收的时候就要杀死那些正在占有内存的进程。

二、Android内存管理机制

1.分配机制 :采用弹性的机制,一开始不会为app分配太多的内存,而是给每一个app进程分配一个小额的量,这个小额的量是由硬件RAM尺寸大小来决定的,随着app不断地运行,当app的内存不够使用,Android会为每一个进程分配额外的内存大小。

2.回收机制 :当前内存不够的时候,Android会杀死其他的进程,回收足够的内存,从而开启新进程。回收的时候会按照进程的优先级,并按照LRU(最近最久未使用)机制回收内存。

三、内存管理机制的特点

1.更少的占用内存。

2.在合适的时候,合理的释放系统资源。

3.在系统内存紧张的情况下,能释放大部分不重要的资源,来为Android系统提供可用的内存。

4.能够很合理的在特殊生命周期中,保存或者还原重要数据,以至于系统能够正确的重新恢复该应用。

四、内存优化方法

1.当Service完成任务之后,尽量停止它。Service是运行在主线程的不能做耗时操作,需要手动退出;而IntentService是运行在子线程的,可以进行耗时操作,并会自动退出。

2.当UI不可见的时候,释放掉一些只有UI使用的资源。

3.在系统内存紧张的时候,尽可能多的释放掉一些非重要资源。

4.避免滥用Bitmap导致的内存浪费。

5.使用针对内存优化过的数据容器,比如使用HashArray替代HashMap。

6.避免使用依赖注入框架。

7.使用zip对齐的apk。

8.使用多进程,把长期运行在后台的模块移入到单独的进程中。

五、内存溢出VS内存泄漏

1.内存溢出 :当前占用的内存加上申请的内存资源超过了Dalvik虚拟机的最大内存限制就会抛出的Out of memory异常。

2.内存泄漏 :应该被回收的对象没有被回收,被其他的类或实例引用,造成GC无法回收。

相关文章

网友评论

      本文标题:(二十九)内存管理面试问题

      本文链接:https://www.haomeiwen.com/subject/gjtrdxtx.html