博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux命令pmap
阅读量:6813 次
发布时间:2019-06-26

本文共 2104 字,大约阅读时间需要 7 分钟。

  jmap可以查看Java程序的堆内存使用情况,pmap可以查看Linux上运行的进程的内存使用情况。

 

  查看Linux上运行的进程的内存使用情况,可以使用jmap,top,ps命令。

  top命令本身也比较的耗资源,系统负载较大时不建议使用。

  ps命令的使用,可以如下:

  ps -aux | grep init  

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME     COMMANDroot 1    0.0 0.0 1584 536 ?    S     s  10:43 0:00 init [3]

  其中RSS 就是这个process 实际占用的物理内存,VSZ 就是process 的虚拟内存,就是process 现在没有使用但未来可能会分配的内存大小。

  ps 出来的结果,是有点不正确的,如果把所有程序的 RSS 加起来,恐怕比你的实际内存还要大呢。为什么呢??因为 ps 的结果,RSS 那部分,是包括共享内存的。

  linux 会把一些shared libraries 载入到内存中,在pmap 的输出中,这些shared libraries 的名字通常是 lib*.so 。如 libX11.so.6.2.0 。这个 libX11.so.6.2.0 会被很多process load 到自己的运行环境中,同时,ps 输出的RSS 结果中,每个process 都包含了这个libX11.so.6.2.0 ,而事实上它只被load 了一次,如果单纯把ps 的结果相加,这样就重复计算了。

 

  使用pmap可以看到进程实际使用的内存。  

$ pmap -d 1980 1980:   /usr/bin/yakuakeAddress   Kbytes Mode  Offset           Device    Mapping00110000    2524 r-x-- 0000000000000000 008:00002 libkio.so.5.3.000387000       4 ----- 0000000000277000 008:00002 libkio.so.5.3.000388000      32 r---- 0000000000277000 008:00002 libkio.so.5.3.000390000      16 rw--- 000000000027f000 008:00002 libkio.so.5.3.000394000     444 r-x-- 0000000000000000 008:00002 libQtDBus.so.4.5.200403000       4 ----- 000000000006f000 008:00002 libQtDBus.so.4.5.200404000       4 r---- 000000000006f000 008:00002 libQtDBus.so.4.5.200405000       4 rw--- 0000000000070000 008:00002 libQtDBus.so.4.5.200407000     228 r-x-- 0000000000000000 008:00002 libkparts.so.4.3.000440000       8 r---- 0000000000039000 008:00002 libkparts.so.4.3.000442000       4 rw--- 000000000003b000 008:00002 libkparts.so.4.3.000443000    3552 r-x-- 0000000000000000 008:00002 libkdeui.so.5.3.0007bb000      76 r---- 0000000000377000 008:00002 libkdeui.so.5.3.0007ce000      24 rw--- 000000000038a000 008:00002 libkdeui.so.5.3.0007d4000       4 rw--- 0000000000000000 000:00000   [ anon ]....mapped: 180472K    writeable/private: 19208K    shared: 20544K

  mapped的结果和ps命令中的VSZ 是一样的,writeable/private是进程实际使用的内存大小,shared 是该进程和其他进程共享的内存大小。

  pmap -x命令的结果和pmap -d命令中的mapped是一样的。

 

  pmap监测Java程序时,得到的是JVM所分配的内存大小,分析已经使用的内存情况就需要使用jmap来完成了。

  

转载于:https://www.cnblogs.com/lnlvinso/p/5272771.html

你可能感兴趣的文章
VC中的正则表达式使用
查看>>
3PAR公司推出第三代虚拟存储阵列
查看>>
对待棘手bug,新手与大牛的差距在哪里?
查看>>
中企通信发布DaaS桌面云解决方案 企业迎来真正“桌面即服务”
查看>>
英国风力发电已比核能便宜
查看>>
《并行计算的编程模型》一2.6.3 AM Ping-Pong示例
查看>>
Kronos银行木马的前世今生
查看>>
武汉电博会看点 daydao电商云ERP亮相
查看>>
浪潮李辉:SDS,承载应用和技术两极蔓延式创新
查看>>
机会与危险并存 存储业希望依旧
查看>>
GE以9.15亿美元收购ServiceMax 以完善工业互联网平台
查看>>
Windows Shellcode学习笔记——通过VirtualProtect绕过DEP
查看>>
Apache httpd 出现多个漏洞 可能引发DoS攻击 2.2.x及2.4.x版本受影响
查看>>
ARM计划将四核心CPU引入磁盘驱动器
查看>>
智慧城市数量年内超500个 这两大难题不得不解
查看>>
《中国人工智能学会通讯》——10.27 提出的方法
查看>>
大数据重点不在于“大”
查看>>
普元发布Primeton DI 6.1.0送新鲜:为用户终极体验而战
查看>>
解读固态磁盘性能发展之现状
查看>>
CFO职能扩张 CIO将面临更大数据压力
查看>>