linux程式記憶體資訊pmap

2021-08-15 09:28:51 字數 3057 閱讀 2949

pmap

lddstace

要熟悉的幾個除錯命令!

兩個檢視記憶體的檔案

$cat/proc/<pid>/stat|awk''

$cat/proc/<pid>/status|grep-i vmsize

其中,關於記憶體的是 vsz 和 rss 這兩個概念

man ps 看看它們的含義:

觀察到系統中的指定程序的位址空間分布情況顯示乙個目標檔案或者鏈結庫檔案中的目標檔案的各個段的大小。該檔案從/proc//maps中獲得資料。

命令格式:

pmap -x/-d  pid

範例:[root@localhost security]# pmap -d 4993

4993: -bash

08047000 596 r-x-- 0000000000000000 003:00006 bash bash的**段

080dc000 28 rwx-- 0000000000094000 003:00006 bash bash的資料段

080e3000 280 rwx-- 00000000080e3000 000:00000 [ anon ] bash的堆

4d575000 84 r-x-- 0000000000000000 003:00006 ld-2.3.4.so 共享庫的**段

4d58a000 4 r-x-- 0000000000015000 003:00006 ld-2.3.4.so 共享庫的資料段

4d58b000 4 rwx-- 0000000000016000 003:00006 ld-2.3.4.so 共享庫的堆

4d58e000 1164 r-x-- 0000000000000000 003:00006 libc-2.3.4.so

4d6b1000 4 r-x-- 0000000000123000 003:00006 libc-2.3.4.so

4d6b2000 12 rwx-- 0000000000124000 003:00006 libc-2.3.4.so

4d6b5000 8 rwx-- 000000004d6b5000 000:00000 [ anon ] 匿名物理記憶體,

4d6de000 8 r-x-- 0000000000000000 003:00006 libdl-2.3.4.so

4d6e0000 8 rwx-- 0000000000001000 003:00006 libdl-2.3.4.so

4d807000 12 r-x-- 0000000000000000 003:00006 libtermcap.so.2.0.8

4d80a000 4 rwx-- 0000000000002000 003:00006 libtermcap.so.2.0.8

b7bc2000 176 r-x-- 0000000000000000 003:00006 gb18030.so

b7bee000 8 rwx-- 000000000002b000 003:00006 gb18030.so

b7bf0000 24 r-xs- 0000000000000000 003:00006 gconv-modules.cache

b7bf6000 1060 r-x-- 0000000002197000 003:00006 locale-archive

b7cff000 2048 r-x-- 0000000000000000 003:00006 locale-archive

b7eff000 36 r-x-- 0000000000000000 003:00006 libnss_files-2.3.4.so

b7f08000 8 rwx-- 0000000000008000 003:00006 libnss_files-2.3.4.so

b7f0a000 8 rwx-- 00000000b7f0a000 000:00000 [ anon ]

b7f20000 8 rwx-- 00000000b7f20000 000:00000 [ anon ]

bff0d000 84 rw--- 00000000bff0d000 000:00000 [ stack ]

ffffe000 4 ----- 0000000000000000 000:00000 [ anon ]

每列的含義如下:

引數 解釋

address:00378000-0038d000 程序所佔的位址空間

kbytes 該虛擬段的大小

rss 裝置號(主裝置:次裝置)

anon 裝置的節點號,0表示沒有節點與記憶體相對應

mode 許可權:r=read, w=write, x=execute, s=shared, p=private(copy on write)

迴圈顯示程序

3066

的裝置格式的最後

1行,間隔

2秒,

[root@c44 ~]#  while true; do pmap -d  3066 | tail -1; sleep 2; done

記憶體洩露指令碼:

memleak.sh:

#!/bin/sh   

i=1   

until [ ! "$i" -le 10 ]   

do  

val=$(pidof converter)

if [ -z "$val" ]; then

ret=$(pmap -d $val | tail -1)

fimytime=$(date "+%y-%m-%d %h:%m:%s")

filetime=$(date "+%y-%m-%d")

echo "[$mytime] [$ret]" >> memleak_$filetime.leak

sleep 5

done

linux應用程式記憶體檢測 pmap

命令格式 pmap root localhost security pmap d 4993 4993 bash 08047000 596 r x 0000000000000000 003 00006 bash bash的 段 080dc000 28 rwx 0000000000094000 003 ...

linux下的pmap命令

linux的pmap命令可以很方便地看到某個程序所用的記憶體情況,說明如下 1 pmap d 程序號 出現的幾列的含義 每列的含義如下 引數 解釋 kbytes 該虛擬段的大小 rss 裝置號 主裝置 次裝置 anon 裝置的節點號,0表示沒有節點與記憶體相對應 mode 許可權 r read,w ...

linux效能測試 pmap命令

參考文獻 名稱 pmap report memory map of a process 檢視程序的記憶體映像資訊 用法pmap options pids pmap v 選項含義 x extended show the extended format.顯示擴充套件格式 d device show th...