在Linux上运行procmem和procrank

Android系统中提供了两个命令行工具procrank、procmem用于查看系统中的内存使用情况。procrank可以查看系统中所有进程的整体内存占用情况,并按照规则排序。而procmem可以针对某个特定的进程分析其堆、栈、共享库等内存占用情况。这两个工具对于我们分析内存相关问题非常有效。由于Android系统使用的是Linux内核,理论上这样的工具可以在Linux上运行。

编译

参考Android系统中procrank、procmem的Android.mk发现他们依赖于libpagemap库,需要将其一并移植到Linux系统中。
Makefile可以通过CMake自动生成,当然前提是需要安装cmake工具。

sudo apt-get install cmake

参考Android.mk,可以写出如下的CMakeLists.txt.

cmake_minimum_required(VERSION 2.8)
PROJECT (mem_proc)
file(GLOB SOURCES "${PROJECT_SOURCE_DIR}/libpagemap/*.c")
add_definitions (
    -D_LARGEFILE64_SOURCE
    )
include_directories (${PROJECT_SOURCE_DIR}/libpagemap/include)
add_library(pagemap ${SOURCES})

add_executable(procmem  ${PROJECT_SOURCE_DIR}/procmem/procmem.c)
target_link_libraries(procmem pagemap)
add_executable(procrank  ${PROJECT_SOURCE_DIR}/procrank/procrank.c)
target_link_libraries(procrank pagemap)

编译过程如下:
-从GitHub下载源码

david-virtual-machine% git clone https://github.com/sunao2002002/mem_proc.git
正克隆到 'mem_proc'...
remote: Counting objects: 22, done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 22 (delta 4), reused 22 (delta 4), pack-reused 0
展开对象中: 100% (22/22), 完成.
检查连接... 完成。

-运行cmake生成Makefile

david-virtual-machine% cd mem_proc
david-virtual-machine% ls
build.sh  CMakeLists.txt  libpagemap  procmem  procrank
david-virtual-machine% mkdir out
david-virtual-machine% cd out
david-virtual-machine% cmake ..
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/david/github/mem_proc/out
david-virtual-machine% ls
CMakeCache.txt  CMakeFiles  cmake_install.cmake  Makefile
david-virtual-machine%

-make生成可执行文件

david-virtual-machine% make
Scanning dependencies of target pagemap
[ 11%] Building C object CMakeFiles/pagemap.dir/libpagemap/pm_memusage.c.o
[ 22%] Building C object CMakeFiles/pagemap.dir/libpagemap/pm_process.c.o
[ 33%] Building C object CMakeFiles/pagemap.dir/libpagemap/pm_map.c.o
[ 44%] Building C object CMakeFiles/pagemap.dir/libpagemap/pm_kernel.c.o
[ 55%] Linking C static library libpagemap.a
[ 55%] Built target pagemap
Scanning d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值