技术解答

App Process died时改进建议


    1、APP程序覆盖onLowMemory函数,监控系统内存不足信号。发生该信号时,弹出对话框“提示终端内存不足”,让用户进行内存清理操作

    2、申请大块内存空间时,做好终端内存监控,发现不满足时给出相应日志,避免程序意外终止

    3、检查APP性能数据,分析是否存在内存泄露的情况

    4、配置适用最低版本号的终端(如:4.0),避免配置低的老旧终端,内存不足无法运行


Process died引发原因

    1、内存不足被杀掉,意外终止(90%

    2、app自身问题崩溃,意外终止,但日志里无更多堆栈信息(10%

    3、被测app被切换到后台,意外终止


LowMemoryKiller知识点补充

    Android在内存管理上与linux有些小的区别。其中一个就是引入了Low memory killer .

    1、引入原因:

       Android是一个多任务系统,也就是说可以同时运行多个程序,这个大家应该很熟悉。

       一般来说,启动运行一个程序是有一定的时间开销的,因此为了加快运行速度,当你退出一个程序时,Android并不会立即杀掉它,这样下次再运行该程序时,可以很快的启动。

       随着系统中保留的程序越来越多,内存肯定会出现不足,low memory killer就是在系统内存低于某值时,清除相关的程序,保障系统保持拥有一定数量的空闲内存。

    2、基本原理和重要概念:

       Low memory killer根据两个原则,进程的重要性和释放这个进程可获取的空闲内存数量,来决定释放的进程。

  Android根据进程的重要性分成以下几类,按照重要性依次降低的顺序:

 

名称     
 oom_adj 
解释
FOREGROUD_APP 
0
前台程序,可以理解为你正在使用的程序
VISIBLE_APP
1
 用户可见的程序
SECONDARY_SERVER
2
 后台服务,比如说QQ会在后台运行服务
HOME_APP  

  HOME,就是主界面
HIDDEN_APP 

被隐藏的程序
CONTENT_PROVIDER 
14
内容提供者
EMPTY_APP  
15
空程序,既不提供服务,也不提供内容