android -- 进程内存,CPU及内核打印输出

原创 2012年03月26日 17:51:17

工欲善其事必先利其器,这里记录下几种android系统查看的手段汇集一下,先记下我这些天用的一些,后面再陆续添加:

1查看内存

cat /proc/cpuinfo 系统CPU的类型等多种信息。

cat /proc/meminfo 系统内存使用信息

空闲内存=free+buffers+cached=total-used 通过读取文件/proc/meminfo的信息获取Memory的总量

系统中对于此信息的解析: android_os_Process_getFreeMemory @ android_util_Process.cpp


PSS,VSS,USS等单个进程使用内存信息:

android_os_Debug_getDirtyPagesPid @ android_os_Debug.cpp


JAVA 层接口:

Process.java 获取 pid, uid , getFreeMemory , getPss等等

getMemoryInfo @ ActivityManager.java


几个概念含义:

• VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
• RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
• PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
• USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存

一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS


2、linux 内核信息输出

直接使用 printk(KERN_ERR ...) 没有打印消息,如下的手段可用:

cat /proc/kmsg 

查看信息,它会block住,然后随着我的调试不断打印。当有printk打印出信息的时候,自然会在窗口中打印出来的


3、OOM 错误out of memory 内存不够问题调试

引用:

在系统内存不足的时候会回收页框,但是在这个过程中可能会发现,系统即使是以最高优先级扫描都无法释放足够的页面来满足请求。如果系统不能够释放页面,就会调用out_of_memory函数,告知系统发生内存溢出,这时就会杀死某个进程。在__alloc_pages函数中,当调用try_to_free_pages回收页框无效的时候,会调用out_of_memory杀死一个进程,释放所占有的page后,再重新尝试分配。

详情请阅读:http://blog.csdn.net/woshixingaaa/article/details/6937255 够清晰


写一个简单的java应用确认,是否没有足够的栈(内存)空间:

public byte[] crashData = null;

public long m_totalmem = 0;

public static final int MALLOC_SIZE =100*1024 ;

crashData = new byte[MALLOC_SIZE];

m_totalmem +=MALLOC_SIZE;


4、获取系统当前时间,用于调试耗时操作

System.java

System.currentTimeMillis(); //local system time in milliseconds
System.nanoTime(); //the current timestamp in nanoseconds


5、查看及修改系统属性:

getprop /setprop


版权声明:本文为博主原创文章,未经博主允许不得转载。

在Logcat中增加kernel打印

在Logcat中增加kernel打印 1 Logcat 的原理简介 Logcat的打印类型有events、radio、system、main等几项,执行命令如下: Logcat –b event...
  • skdev
  • skdev
  • 2015年04月13日 15:23
  • 3853

Linux中如何使用dmesg输出内核信息

原文  http://blog.winclient.cn/linux/183.html Linux 内核是一个非常复杂的工程项目,也有着非常复杂的工作机制。其中就包括管理从开机到用户的 ...
  • Debug_Snail
  • Debug_Snail
  • 2015年03月31日 07:01
  • 1221

调整内核printk的打印级别

有时调试内核模块,打印信息太多了,可以通过修改/proc/sys/kernel/printk文件内容来控制。 默认设置是7   4   1   7 # cat /proc/sys/kern...
  • tonywgx
  • tonywgx
  • 2013年12月23日 14:10
  • 12257

为android添加服务,把所有的Log打印输出存在/data/local/下

在android 4.1上添加服务: service logcat /system/bin/logcat -r 1000 -n 10 -v time -f /data/local/logcat.lo...
  • wenfeng731
  • wenfeng731
  • 2013年09月12日 15:00
  • 833

【Android 开发入门】android studio 控制台打印输出日志

有些情况下,不方便使用断点的方式来调试,而是希望在控制台打印输出日志,使用过Eclipse的同学都知道Java可以使用 System.out.println(""); 来在控制台打印输出日志,但是在a...
  • testcs_dn
  • testcs_dn
  • 2016年12月17日 22:59
  • 20989

android中logcat打印输出结果不完整,超出上限

今天写代码的时候,服务器返回的json数据量比较大,然后我想在logcat中完全输出服务器返回的Json格式的字符串事,发现logcat中返回的信息中明显少了后面一节,刚开始还以为程序有bug,调试了...
  • abc6368765
  • abc6368765
  • 2016年01月07日 10:02
  • 8210

Java打印输出数组和集合

Java打印输出数组和集合 在java中是可以直接打印输出数组和集合的,不需要我们编写循环来打印输出。 数组可以通过Arrays.toString(int[] )函数来输出;而因为List Set...
  • hust_hacker_art
  • hust_hacker_art
  • 2016年09月01日 12:37
  • 4681

Lua中实现table的打印输出(print table)

介绍如何实现Print一个Table,做测试时比较实用的小函数。
  • HQC17
  • HQC17
  • 2016年09月21日 15:14
  • 6732

使用TCP协议编写一个网络程序,设置服务器端的监听端口是8002,当与客户端建立连接后,服务器端向客户端发送数据“Hello, world”,客户端收到数据后打印输出。

使用TCP协议编写一个网络程序,设置服务器端的监听端口是8002,当与客户端建立连接后,服务器端向客户端发送数据“Hello, world”,客户端收到数据后打印输出。 import jav...
  • Messi_tz
  • Messi_tz
  • 2017年12月17日 13:58
  • 113

abap smartforms使用自定义格式打印输出重叠解决方案

通常我们在进行smartforms格式化打印单据的时候,也许系统定义的格式无法满足我们,这个时候我们就需要自定义一个格式来打印,对于自定义的格式我们在预览的时候是正常的,但是打印出来我们发现一些问题,...
  • champaignwolf
  • champaignwolf
  • 2013年05月22日 18:24
  • 4738
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android -- 进程内存,CPU及内核打印输出
举报原因:
原因补充:

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