android -- 进程内存,CPU及内核打印输出
2016-04-09 15:38
706 查看
http://blog.csdn.net/andyhuabing/article/details/7395839
工欲善其事必先利其器,这里记录下几种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
工欲善其事必先利其器,这里记录下几种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
相关文章推荐
- Android 属性系统设计分析
- Android 属性系统 Property service 设定分析
- 源码分析-Android中的消息机制详解
- android2.3 --- Service Manager分析
- Android右滑销毁Activity
- Android 播放音频文件
- Android Studio for Mac Install PlantUML plugin
- Android - 动态库双向依赖解决方法
- Android---NDK编译静态库失败
- Android学习--后台线程之Looper、Handler、HandlerThread
- Android -- Parcelable 序列化操作数据(上篇)
- Android2.3 MediaPlayer系统祥解系列(概述)
- Android学习基本索引(四)——记录,没事自己看
- Android从无知到有知——NO.3
- Android 日志系统logcat内核代码分析
- Android系统开发中LOG的输出与使用
- Android之利用正则表达式校验邮箱、手机号、密码、身份证号码等
- Android——getPreferences()、getSharedPreferences()和getDefaultSharedPreferences()区别
- Android 中文件类型与MIME的匹配表
- Android SDK下载技巧