logcat后ctrl+Z 退出,压测导致OOM

来源:互联网 发布:比尔盖茨书单知乎 编辑:程序博客网 时间:2024/06/07 15:38

在console端输入logcat, 然后ctrl+z 将logcat进程切到background,

压测一段时间后/system/bin/logd会消耗大量内存,从而导致OOM并Killing 'd.process.xxx'导致系统各种异常。
/system/bin/logd 是android log系统的守护进程, 如果将logcat切到后台,应该是会把log信息保存到内存。

log如下:
[05:20:18:51:06]shell@board:/ $ su
[05:20:18:51:16]shell@board:/ # /storage/sdcard0/mem_usage.sh &  //用于压测输出系统运行信息
[05:20:18:51:18] 2273 14040K 2296K 1501K 1428K /system/bin/logd   //此时的logd只占了1428K的物理内存

[05:20:18:52:11]shell@board:/ # logcat -c
[05:20:18:52:15]shell@board:/ # logcat
[05:20:18:52:18]
[05:20:18:52:20]^Z[2] + Stopped logcat //终止logcat
[05:20:18:53:10]shell@board:/ # logcat  //此处又敲了一次logcat
[05:20:18:53:16]^Z[3] + Stopped logcat
[05:20:18:53:24]shell@board:/ # cat /proc/meminfo
[05:20:18:53:24]MemTotal: 1026800 kB
[05:20:18:53:24]MemFree: 266564 kB 可以看到此时内存还很多
...
看如下procrank信息
[05:20:18:53:27] PID Vss Rss Pss Uss cmdline
[05:20:18:53:27] 3657 1287884K 95712K 51968K 48692K com.haiersoft.launcherproject2995hk
[05:20:18:53:27] 2714 1321520K 71304K 34644K 29324K system_server

[05:20:18:53:27] 2273    16088K    2208K    1415K    1344K  /system/bin/logd
...
[05:20:18:53:27] 4326 3848K 748K 292K 268K logcat
[05:20:18:53:27] 4313 3848K 664K 218K 196K logcat //可以看到有两个logcat进程background 运行

1308475行开始如下:
[05:21:17:14:47] PID Vss Rss Pss Uss cmdline
[05:21:17:14:47] 2273 330456K 316804K 251603K 243248K /system/bin/logd //此时的logd占了243248K的物理内存
...
[05:21:17:14:47][85104.250810] lowmemorykiller: Killing 'd.process.media' (3629), adj 1000,
[05:21:17:14:47][85104.250810] to free 39640kB on behalf of 'kswapd0' (367) because
[05:21:17:14:47][85104.250810] cache 177876kB is below limit 187076kB for oom_score_adj 1000

logd是android log系统的守护进程, 通过下面方式启动:

service logd /system/bin/logd
    class core
    socket logd stream 0666 logd logd
    socket logdr seqpacket 0666 logd logd
    socket logdw dgram 0222 logd logd
    seclabel u:r:logd:s0

logd相当于log系统的一个server,  logcat命令相当于client,  logd会把各种log信息写到socket logdw, 而logcat client端会通过logd socket项logd 发送一些control instruct,

同时连接logdr socket读取log信息。

 

0 0
原创粉丝点击