android如何分析进程被杀问题_am_low_memory-程序员宅基地

技术标签: java  AMS  android  

查看进程被杀的3个步骤

确定被杀进程的包名

  • 有人给出直接用
  • 百度搜索app对应的包名

确定进程被杀的精确时间点

  • 有进程被杀时间点及原因包名,则直接用
  • log中搜索正则表达式(gedit支持正则)am_proc_died: [0,[0-9]*,xxxx,,xxxx代表包名 ,拿到这行log的时间点以及进程pid

eg: 08-19 10:06:55.302 1000 1699 12137 I am_proc_died: [0,9307,com.quark.browser,905,11]
如上栗子:时间点为08-19 10:06:55.302 (搜索时可自行减几毫秒,否则可能搜索不到同时间点的其他log),进程pid为9307

查看进程被杀原因

  • 在system log(logcat -v 下面)或event log(logcat -b events下面)搜索2中时间点附近对应pid的log
    12-16 15:46:10.814 root 756 756 I Zygote : Process 9187 exited due to signal 11 (Segmentation fault)
    12-16 15:46:10.830 1000 1747 2367 I ActivityManager: Process com.tencent.mm (pid 9187) has died: fg TOP
  • 或者搜索对应包名的ApplicationExitInfo
    ApplicationExitInfo #14:
    timestamp=2020-12-16 15:45:08.647
    pid=6175
    realUid=10249
    packageUid=10249
    definingUid=10249
    user=0
    process=com.tencent.mm
    reason=2 (SIGNALED)
    status=11

    importance=100
    pss=204MB
    rss=311MB
    description=null
    state=empty
    trace=null

常见的查杀类型

LowMemoryKiller(低内存查杀)

原因查找:

  1. 直接搜索lowmemorykiller: Kill ‘com.xxx.xxx’ (pid)
    08-19 10:06:55.207 lmkd 954 954 E lowmemorykiller: Kill ‘com.quark.browser’ (9307), uid 10248, oom_adj 905 to free 69048kB
    08-19 10:06:55.207 lmkd 954 954 I lowmemorykiller: Reclaimed 69048kB, cache(718372kB) and free(314436kB)-reserved(43892kB) below min(765000kB) for oom_adj 900

代表:手机cache 内存为718372kb,低于oom_adj 900这个级别的最低值765000kB,所以lmkd会查杀pid为9307的com.quark.browser进程,该进程当前的adj为905(高于900),释放了69048kb

  1. 未有lowmemorykiller打印,但是am_low_memory递减同时,am_proc_died同时打印,且system log中有has died 打印
    07-30 22:18:26.746 1000 1718 5108 I ActivityManager: Process com.xiaomi.channel (pid 21963) has died: hvy HVY
    07-30 22:18:26.746 1000 1718 5127 I am_low_memory: 68
    07-30 22:18:26.746 1000 1718 5108 I am_proc_died: [0,21963,com.xiaomi.channel,400,14]
    07-30 22:18:26.803 1000 1718 5127 I am_low_memory: 66

代表:am_low_memory 后面的数字代表当前系统中lru 中进程的数量,数字递减代表有进程被杀,has died 代表非AMS查杀(lmk查杀或信号查杀),hvy HVY代表进程的优先级(进程自查一览表)

看下手机内存状态以及占内存较高的应用

log中搜索 dumpsys meminfo,赋值粘贴如下信息到jira上

  1. 内存状态信息
    Total RAM: 5,510,720K (status normal)
    Free RAM: 1,092,011K ( 31,027K cached pss + 938,028K cached kernel + 864K cached ion + 122,092K free)
    Used RAM: 5,982,010K (5,483,142K used pss + 498,868K kernel)
    Lost RAM: 266,644K
    ZRAM: 462,104K physical used for 1,590,008K in swap (3,014,028K total swap)
    Tuning: 256 (large 512), oom 967,680K, restore limit 322,560K (high-end-gfx)
    --------- 9.460s was the duration of dumpsys meminfo, ending at: 2020-08-15 12:33:59

代表如下:
手机总可用内存为5,510,720K
Free的cache 内存为31,027K cached pss
主要使用的是 5,483,142K
丢失内存:266,644K 这个值过大不正常

  1. 高优先级应用(占用达6位数的):
    Total PSS by process:
    509,265K: com.tencent.mm (pid 8448 / activities) ( 148,217K in swap)
    315,084K: com.miui.miwallpaper.earth:earthSuperWallpaper (pid 4223) ( 42,026K in swap)
    304,568K: system (pid 1699) ( 33,679K in swap)
    295,422K: com.miui.home (pid 4283 / activities) ( 107,864K in swap)
    258,716K: com.tencent.mm (pid 10718 / activities) ( 119,475K in swap)
    195,761K: [email protected]_64 (pid 847) ( 194,356K in swap)
    170,929K: com.tencent.mm:tools (pid 25205) ( 136K in swap)
    170,385K: surfaceflinger (pid 956) ( 7,976K in swap)
    163,051K: com.android.systemui (pid 4066) ( 61,983K in swap)
    140,609K: com.xiaomi.smarthome (pid 10748) ( 75,044K in swap)
    104,044K: com.tencent.mobileqq (pid 17557) ( 589K in swap)

正常查杀empty进程

  • 08-10 13:32:13.057 1000 1700 1812 I am_kill : [0,2409,com.miui.screenrecorder,955,empty for 1800s]
    empty进程数量达到阈值了,会查杀30min内没活跃的进程
  • 08-10 16:00:54.244 1000 1700 1795 I ActivityManager: Killing 20081:com.android.providers.calendar/u0a72 (adj 985): empty #26
    系统内empty进程数量达到阈值26(不同手机略有不同)会按时间顺序查杀进程

客户端调用startInstrumentation,会先forceStopPackage再拉起,可能会查杀到相关的其他进程

08-03 15:10:02.933 1000 1303 12534 I ActivityManager: Force stopping com.eg.android.AlipayGphone appid=10198 user=0: start instr
08-03 15:10:02.933 1000 1303 12534 I ActivityManager: Killing 1441:com.kugou.android/u0a219 (adj 0): stop com.eg.android.AlipayGphone: start instr

进程自己退出

08-13 10:17:04.053 root 689 689 I Zygote : Process 29263 exited cleanly (0)
08-13 10:17:04.056 1000 1692 1805 I libprocessgroup: Successfully killed process cgroup uid 10252 pid 29263 in 122ms
08-13 10:17:03.933 1000 1692 5189 I ActivityManager: Process com.tencent.tmgp.pubgmhd (pid 29263) has died: hvy HVY

idle maint查杀

设备处于两次idle之间低内存状态持续时间超1/3,会查杀内存增长较高的进程,原生策略。
08-14 09:43:55.617 1000 1477 1779 I am_wtf : [0,1477,system_server,-1,ActivityManager,Killcom.tencent.mm in idle maint: pss=365677, swapPss=174343, initialPss=173858, period=+1h17m4s218ms, lowRamPeriod=+1h8m19s250ms]
08-14 09:43:55.625 1000 1477 1477 I am_kill : [0,17579,com.byai.crm,100,idle maint (pss 165820 from 95133)]
08-14 09:43:55.772 1041 664 31875 I [30200] : 17579&10168&0&-1
08-14 09:43:55.724 1000 1477 1514 I am_proc_died: [0,17579,com.byai.crm,100,4]

installPackageLI/ deletePackageX等

只要是forceStopPackage接口查杀就有可能查杀到关联的进程,如下拨号就是因为与gms关联被杀

08-10 15:59:30.827 1000 1700 1812 I ActivityManager: Force stopping com.google.android.gms appid=10190 user=-1: installPackageLI
08-10 15:59:30.984 1000 1700 1812 I ActivityManager: Killing 3876:com.google.android.dialer/u0a180 (adj -700): stop com.google.android.gms: installPackageLI

过渡使用CPU

09-06 18:07:44.445 1000 1651 1798 I am_kill : [0,22157,com.ximalaya.ting.android,900,excessive cpu 16720 during 300044 dur=2221553 limit=2]
09-06 18:07:44.445 1000 1651 1798 I ActivityManager: Killing 22157:com.ximalaya.ting.android/u0a239 (adj 900): excessive cpu 16720 during 300044 dur=2221553 limit=2
09-06 18:07:44.566 root 681 681 I Zygote : Process 22157 exited due to signal 9 (Killed)

上次adj降为Service以下到现在经历2221553 ms,cpu POWER_CHECK_MAX_CPU_4 = 2, 两次检测时间间隔为300044 ms,使用cpu时间为16720ms,超过2%

进程的某个线程发生异常,自己发Signal 9信号给Zygote 杀掉自己

09-07 16:53:03.027 1000 2566 2582 I Process : Sending signal. PID: 2566 SIG: 9
09-07 16:53:03.154 root 681 681 I Zygote : Process 2566 exited due to signal 9 (Killed)
09-07 16:53:03.167 1000 1734 4006 I ActivityManager: Process com.android.systemui (pid 2566) has died: pers PER

进程发生未捕获异常自杀

06-21 18:06:55.108 10261 12675 12675 I Process : Process is going to kill itself!
06-21 18:06:55.108 10261 12675 12675 I Process : java.lang.Exception
06-21 18:06:55.108 10261 12675 12675 I Process : at android.os.Process.killProcess(Process.java:1350)
06-21 18:06:55.108 10261 12675 12675 I Process : at com.android.internal.os.RuntimeInit$KillApplicationHandler.uncaughtException(RuntimeInit.java:183)
06-21 18:06:55.108 10261 12675 12675 I Process : at com.dragon.read.app.y$1.uncaughtException(SourceFile:33816621)
06-21 18:06:55.108 10261 12675 12675 I Process : at com.bytedance.crash.i.a.d(SourceFile:33751057)
06-21 18:06:55.108 10261 12675 12675 I Process : at com.bytedance.crash.i.a.b(SourceFile:34079314)
06-21 18:06:55.108 10261 12675 12675 I Process : at com.bytedance.crash.i.a.uncaughtException(SourceFile:33619968)
06-21 18:06:55.108 10261 12675 12675 I Process : at com.bytedance.platform.godzilla.common.d.a(SourceFile:33685510)
06-21 18:06:55.108 10261 12675 12675 I Process : at com.bytedance.platform.godzilla.common.d.uncaughtException(SourceFile:33882169)
06-21 18:06:55.108 10261 12675 12675 I Process : at org.chromium.base.JavaExceptionReporter.uncaughtException(chromium-TrichromeWebViewGoogle6432.apk-stable-567252434:17)
06-21 18:06:55.108 10261 12675 12675 I Process : at com.bytedance.n.n.el.n.u(Unknown Source:166)
06-21 18:06:55.108 10261 12675 12675 I Process : at com.bytedance.n.n.el.n.uncaughtException(Unknown Source:115)
06-21 18:06:55.108 10261 12675 12675 I Process : at com.bytedance.sdk.openadsdk.core.e.y.uncaughtException(Unknown Source:103)
06-21 18:06:55.108 10261 12675 12675 I Process : at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1071)
06-21 18:06:55.108 10261 12675 12675 I Process : at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1066)
06-21 18:06:55.108 10261 12675 12675 I Process : at java.lang.Thread.dispatchUncaughtException(Thread.java:2306)
06-21 18:06:55.108 10261 12675 12675 I Process : Sending signal. PID: 12675 SIG: 9

06-21 18:06:55.241 1000 1965 3017 I ActivityManager: Process com.dragon.read (pid 12675) has died: fg TOP
06-21 18:06:55.242 1000 1965 3017 I am_proc_died: [0,12675,com.dragon.read,0,2]

某个app调用forceStopPackage 接口

03-25 19:34:10.498 26589 29585 I ActivityManager: Killing 14459:com.xiaomi.misubscreenui/1000 (adj 0): stop com.xiaomi.misubscreenui due to from process:com.miui.voiceassist

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xiaoyantan/article/details/118489613

智能推荐

hdu 1229 还是A+B(水)-程序员宅基地

文章浏览阅读122次。还是A+BTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 24568Accepted Submission(s): 11729Problem Description读入两个小于10000的正整数A和B,计算A+B。...

http客户端Feign——日志配置_feign 日志设置-程序员宅基地

文章浏览阅读419次。HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息。FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。BASIC:仅记录请求的方法,URL以及响应状态码和执行时间。NONE:不记录任何日志信息,这是默认值。配置Feign日志有两种方式;方式二:java代码实现。注解中声明则代表某服务。方式一:配置文件方式。_feign 日志设置

[转载]将容器管理的持久性 Bean 用于面向服务的体系结构-程序员宅基地

文章浏览阅读155次。将容器管理的持久性 Bean 用于面向服务的体系结构本文将介绍如何使用 IBM WebSphere Process Server 对容器管理的持久性 (CMP) Bean的连接和持久性逻辑加以控制,使其可以存储在非关系数据库..._javax.ejb.objectnotfoundexception: no such entity!

基础java练习题(递归)_java 递归例题-程序员宅基地

文章浏览阅读1.5k次。基础java练习题一、递归实现跳台阶从第一级跳到第n级,有多少种跳法一次可跳一级,也可跳两级。还能跳三级import java.math.BigDecimal;import java.util.Scanner;public class Main{ public static void main(String[]args){ Scanner reader=new Scanner(System.in); while(reader.hasNext()){ _java 递归例题

面向对象程序设计(荣誉)实验一 String_对存储在string数组内的所有以字符‘a’开始并以字符‘e’结尾的单词做加密处理。-程序员宅基地

文章浏览阅读1.5k次,点赞6次,收藏6次。目录1.串应用- 计算一个串的最长的真前后缀题目描述输入输出样例输入样例输出题解2.字符串替换(string)题目描述输入输出样例输入样例输出题解3.可重叠子串 (Ver. I)题目描述输入输出样例输入样例输出题解4.字符串操作(string)题目描述输入输出样例输入样例输出题解1.串应用- 计算一个串的最长的真前后缀题目描述给定一个串,如ABCDAB,则ABCDAB的真前缀有:{ A, AB,ABC, ABCD, ABCDA }ABCDAB的真后缀有:{ B, AB,DAB, CDAB, BCDAB_对存储在string数组内的所有以字符‘a’开始并以字符‘e’结尾的单词做加密处理。

算法设计与问题求解/西安交通大学本科课程MOOC/C_算法设计与问题求解西安交通大学-程序员宅基地

文章浏览阅读68次。西安交通大学/算法设计与问题求解/树与二叉树/MOOC_算法设计与问题求解西安交通大学

随便推点

[Vue warn]: Computed property “totalPrice“ was assigned to but it has no setter._computed property "totalprice" was assigned to but-程序员宅基地

文章浏览阅读1.6k次。问题:在Vue项目中出现如下错误提示:[Vue warn]: Computed property "totalPrice" was assigned to but it has no setter. (found in <Anonymous>)代码:<input v-model="totalPrice"/>原因:v-model命令,因Vue 的双向数据绑定原理 , 会自动操作 totalPrice, 对其进行set 操作而 totalPrice 作为计..._computed property "totalprice" was assigned to but it has no setter.

basic1003-我要通过!13行搞定:也许是全网最奇葩解法_basic 1003 case 1-程序员宅基地

文章浏览阅读60次。十分暴力而简洁的解决方式:读取P和T的位置并自动生成唯一正确答案,将题给测点与之对比,不一样就给我爬!_basic 1003 case 1

服务器浏览war文件,详解将Web项目War包部署到Tomcat服务器基本步骤-程序员宅基地

文章浏览阅读422次。原标题:详解将Web项目War包部署到Tomcat服务器基本步骤详解将Web项目War包部署到Tomcat服务器基本步骤1 War包War包一般是在进行Web开发时,通常是一个网站Project下的所有源码的集合,里面包含前台HTML/CSS/JS的代码,也包含Java的代码。当开发人员在自己的开发机器上调试所有代码并通过后,为了交给测试人员测试和未来进行产品发布,都需要将开发人员的源码打包成Wa..._/opt/bosssoft/war/medical-web.war/web-inf/web.xml of module medical-web.war.

python组成三位无重复数字_python组合无重复三位数的实例-程序员宅基地

文章浏览阅读3k次,点赞3次,收藏13次。# -*- coding: utf-8 -*-# 简述:这里有四个数字,分别是:1、2、3、4#提问:能组成多少个互不相同且无重复数字的三位数?各是多少?def f(n):list=[]count=0for i in range(1,n+1):for j in range(1, n+1):for k in range(1, n+1):if i!=j and j!=k and i!=k:list.a..._python求从0到9任意组合成三位数数字不能重复并输出

ElementUl中的el-table怎样吧0和1改变为男和女_elementui table 性别-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏2次。<el-table-column prop="studentSex" label="性别" :formatter="sex"></el-table-column>然后就在vue的methods中写方法就OK了methods: { sex(row,index){ if(row.studentSex == 1){ return '男'; }else{ return '女'; }..._elementui table 性别

java文件操作之移动文件到指定的目录_java中怎么将pro.txt移动到design_mode_code根目录下-程序员宅基地

文章浏览阅读1.1k次。java文件操作之移动文件到指定的目录_java中怎么将pro.txt移动到design_mode_code根目录下

推荐文章

热门文章

相关标签