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

原创 2016年05月31日 15:08:52

在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信息。

 

【Android 应用开发】Android开发 使用 adb logcat 显示 Android 日志

作者 : 万境绝尘  转载请著名出处eclipse 自带的 LogCat 工具太垃圾了, 开始用 adb logcat 在终端查看日志;1. 解析 adb logcat 的帮助信息在命令行中输入 ad...

CTRL+Z的ascii码是多少

键盘上所有的键(包括组合键)都有自己的扫描码和ASCII码,这些扫描码和ASCII码是由键盘中断(int 16h)定义的。 windows系统中,单击 开始→运行,在“打开”框中输入:cmd /c ...
  • tongdh
  • tongdh
  • 2014年04月25日 09:46
  • 10955

使程序在Linux下后台运行--- Linux Ctrl+Z的使用方法

http://blog.chinaunix.net/uid-10219166-id-2968756.html   假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情...

word Ctrl Z 撤销功能无法使用怎么办?

原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/785...

前后台切换命令(ctrl+z jobs bg fg &)

当我在终端里面运行某个命令的时候,结果不是很快就能出来的那种,或者是一大堆字在屏幕上狂翻 这个时候,有时ctrl+c也不起作用,那我会用ctrl+z退出来,这个很有效,但是说实话我不知道为什么 这个...

linux中fg、bg、jobs、&、nohup、ctrl + z命令详解

fg、bg、jobs、&、nohup、ctrl + z命令 一、& 加在一个命令的最后,可以把这个命令放到后台执行,如gftp &, 二、ctrl + z 可以将一个正在前台执...

std::cin 与 ctrl+z 配合使用时遇到的问题

《C++ Primer》第四版第一章1.4.4节,就早早的教了women
  • obmar45
  • obmar45
  • 2014年07月08日 10:25
  • 734

Ctrl+Z 后恢复进程到前台

转载自:http://blog.chinaunix.net/uid-10219166-id-2968756.html ----------- 以下是原文     假设你发现前台运行的一个程序需...

C++ 输入ctrl+z 不能再使用cin的问题

问题介绍: 程序步骤是开始往容器里面写数据,以Ctrl+Z来终止输入流,然后需要输入一个数据,来判断容器中是否有这个数据。 源代码如下: 1 #include 2 #include 3 #i...

fg、bg、jobs、&、ctrl + z等linux命令简介

fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的 一。& 最经常被用到 这个用在一个命令的最后,可以把这个命令放到后台执行...
  • liuzx32
  • liuzx32
  • 2013年07月15日 21:05
  • 473
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:logcat后ctrl+Z 退出,压测导致OOM
举报原因:
原因补充:

(最多只允许输入30个字)