前言: procrank是一个统计内存使用的神器,包括VSS,PSS,PSS和USS的详细参数。作为一个内存使用的分析工具,简直厉害的不要不要的。...作者尝试过几个Linux发行版,都没有把procrank作为可以安装的包。这也不奇怪,作者接触这个命令的时候,也是在Android中使用到的。...代码见:https://github.com/pacepi/procrank 分析: 1,在分析procrank的代码之前,需要先了解到/proc/pid/pagemap这个文件。...代码实现在linux-4.0.4/fs/proc/task_mmu.c文件的pagemap_read函数中。 ?...代码实现在linux-4.0.4/fs/proc/task_mmu.c文件的show_map_vma函数中。如图,就是cat命令的maps。
在Linux里面,一个进程占用的内存有不同种说法,可以是VSS/RSS/PSS/USS四种形式,这四种形式首字母分别是Virtual/Resident/Proportional/Unique的意思。...procrank是Android下的工具,通过工具可以看到进程内存的不同形式占用。...从procrank_linux.git下载代码,然后make编译。 sudo procrank查看各进成的VSS/RSS/PSS/USS占用情况。...使用procrank和smaps验证 首先启动一个sleep,然后启动同一sleep的另一个实例,使用procrank记录其内存使用情况如下。...参考文档: 《如何通过Smem命令行检查Ubuntu上的内存使用情况》 《Memstat -- 查看Linux共享库的内存占用》 《Using procrank to measure memory usage
读取文件/proc/meminfo 系统内存使用状态 CPU INFO 获取该log:执行/system/bin/top -n 1 -d 1 -m 30 -t 系统CPU使用状态 PROCRANK... 获取该log:执行/system/bin/procrank 执行/system/xbin/procrank后输出的结果,查看一些内存使用状态 VIRTUAL MEMORY STATS ...Android内核输出的Log KERNEL WAKELOCKS 获取该log:读取文件/proc/wakelocks 内核对一些程式和服务唤醒和休眠的一些记录 KERNEL CPUFREQ (Linux
information that will assist in interpreting memory reports from various tools so the true memory usage for Linux...Android has a tool called procrank (/system/xbin/procrank), which lists out the memory usage of Linux...Linux systems like ours manage memory in 4096 byte pages at the lowest level.
应用内存峰值情况 5)应用内存泄露情况 6)应用是否常驻内存 7)压力测试后的内存使用情况 内存问题现象: 1)内存抖动 2)大内存对象被分配 3)内存不断增长 4)频繁GC 内存数据获取: 1、各种linux...工具 adb shell procrank 说明: VSS – Virtual Set Size 虚拟耗用内存(包含共享库占用的内存) RSS – Resident Set Size 实际使用物理内存(...而PSS通过如下命令来获取:adb shell dumpsys meminfo |grep TOTAL 4、通过android提供的procrank 1)首先去google获取...procrank、procmem、libpagemap.so三个文件 2)然后push文件,执行 adb push procrank /system/xbin adb push procmem /system...在弹出的对话框中设置持续抓取时间,在trace taps下面勾选gfx及view选项 3.手工滑动界面可以通过节拍来进行滑动或者扫动,帧率数据会保存到默认路径下,默认名称为trace.html 4.将trace.html文件拷贝到linux
2.使用 android 提供的 adb shell dumpsys meminfo |grep packagename >/address/mem.txt 来获取 3.使用 android 提供的 procrank...这里我们详解一下 procrank 方法(批处理) 首先去google获取procrank、procmem、libpagemap.so 三个文件 ....然后push文件,执行 adb push procrank /system/xbin adb push procmem /system/xbinadb push libpagemap.so /system.../lib 赋权 adb shell chmod 6755 /system/xbin/procrank adb shell chmod 6755 /system/xbin/procmemadb shell...chmod 6755 /system/lib/libpagemap.so , 在开启工具记录 adb shell procrank |grep packagename >/address/procrank.txt
INFO 获取该log:读取文件/proc/meminfo 系统内存使用状态 CPU INFO 获取该log:执行/system/bin/top -n 1 -d 1 -m 30 -t 系统CPU使用状态 PROCRANK...获取该log:执行/system/bin/procrank 执行/system/xbin/procrank后输出的结果,查看一些内存使用状态 VIRTUAL MEMORY STATS 获取该log:读取文件...显示Android内核输出的Log KERNEL WAKELOCKS 获取该log:读取文件/proc/wakelocks 内核对一些程式和服务唤醒和休眠的一些记录 KERNEL CPUFREQ (Linux
Procrank + Shell脚本 • #procrank 1、 VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存) 2、 RSS.../bin/bash while true; do adbshell procrank | grep "com.qihoo360.mobilesafe" sleep1...Procrank,就是一个经常被精简掉的命令。
③使用Android提供的procrank。这里我们详解一下procrank方法(批处理)。...首先,去google获取procrank、procmem、libpagemap.so三个文件;然后push文件,执行;最后,剩下的就是整理测试数据了。 ?...在弹出的对话框中设置持续抓取时间,在tracetaps下面勾选gfx及view选项, c、人滑动界面可以通过节拍来进行滑动或者扫动,帧率数据会保存到默认路径下,默认名称为trace.html d、将trace.html文件拷贝到linux
2.使用 android 提供的 adb shell dumpsys meminfo |grep packagename >/address/mem.txt 来获取 3.使用 android 提供的 procrank
USS 信息 adb shell procrank 指定进程VSS. RSS. PSS....top 34、查看占用内存前6的app adb shell top -m 6 35、刷新一次内存信息,然后返回 adb shell top -n 1 36、查询各进程内存使用情况 adb shell procrank...services信息 adb shell service list 39、查看当前内存占用(该方式只能得出系统整个内存的大概使用情况) 车 如果你想查看所有进程的内存使用情况 adb shell procrank
communicating with Android phone such as install application, copy files from/to device and perform some linux...shell top 查看占用内存前6的app: adb shell top -m 6 刷新一次内存信息,然后返回: adb shell top -n 1 查询各进程内存使用情况: adb shell procrank
内存回收应该是整个Linux的内存管理上最难理解的部分了。 分析: 1,PFRA Page Frame Reclaim Algorithm,Linux的内存回收算法。...在linux-4.0.4/mm/page_alloc.c中: ?...Linux还会进一步尝试,只不过这次会慢一些。 ?...如果file量很大,可能系统中映射了比较大的文件或者比较多的文件;如果anon比较多,再通过top、procrank、slabtop分析哪里使用的多。...只是说,如果内存不够了,linux会尝试回收,尽量满足。 回收的时候,如果实在回收不到了,linux会选择最差的策略---杀掉一部分进程。
Android 内存管理 内存管理机制 Android系统是基于Linux 内核开发的开源操作系统,而linux系统的内存管理有其独特的动态存储管理机制。...不过Android系统对Linux的内存管理机制进行了优化,Linux系统会在进程活动停止后就结束该进程,而Android把这些进程都保留在内存中,直到系统需要更多内存为止。...回收机制 Android对内存的使用方式是“尽最大限度的使用”,这一点继承了Linux的优点。...获取应用内存占用信息 连接设备,使用命令adb shell procrank来获取各个应用的VSS、RSS、PSS、USS。...Android匿名共享内存是基于Linux共享内存的,都是在tmpfs文件系统上新建文件,并将其映射到不同的进程空间,从而达到共享内存的目的,只是Android在Linux的基础上进行了改造,并借助Binder
如,执行代码段时会发生缺页,Linux申请1页内存,并从硬盘读取出代码段,此时产生了IO操作,为major主缺页。...如,执行代码段时会发生缺页,Linux申请1页内存,并从硬盘读取出代码段,此时产生了IO操作,为major主缺页。 ?...综上,page fault后,Linux会查VMA,也会比对VMA中和页表中的权限,体现出VMA的重要作用。...这里我们用工具 procrank先来看下Linux进程的内存占用量 。 ?...物理地址和虚拟地址的分布 Linux内核内存管理算法Buddy和Slab
查看设备cpu和内存占用情况 adb shell top -m 6 //查看占用内存前6的app adb shell top -n 1 //刷新一次内存信息,然后返回 adb shell procrank
,在缺页中断的处理程序中读出虚拟地址和原因,去VMA中查,发现是用户程序在写malloc的合法区域且有写权限,Linux内核就真正的申请内存,页表中对应一页的权限也修改为R+W。...如,执行代码段时会发生缺页,Linux申请1页内存,并从硬盘读取出代码段,此时产生了IO操作,为major主缺页。...如,执行代码段时会发生缺页,Linux申请1页内存,并从硬盘读取出代码段,此时产生了IO操作,为major主缺页。 ?...(此图来源于宋宝华老师) 综上,page fault后,Linux会查VMA,也会比对VMA中和页表中的权限,体现出VMA的重要作用。...这里我们用工具 procrank先来看下Linux进程的内存占用量 。 ?
对于资源占用情况的分析,我们可以使用procrank命令监控内存,top命令监控cpu,并通过脚本的方式来获取。...将记录的信息拼接在一起后,每隔一段时间记录一次,例如 while true do echo `date`" "`procrank | grep long_asr | cut -c 8-42`" "`top
Allocation Tracker LeakCanary ADB shell dumpsysmeminfo %package_name% && dumpsys meminfo %pid% top procrank
领取专属 10元无门槛券
手把手带您无忧上云