1. 程式人生 > >Linux程序佔用記憶體分析之pmap

Linux程序佔用記憶體分析之pmap

檢視程序的記憶體映像資訊(report memory map of a process) # pmap 用法 pmap [options] PID [PID ...] 選項 Options:  -x, --extended              show details //顯示擴充套件格式  -X                          show even more details             WARNING: format changes according to /proc/PID/smaps  -XX                         show everything the kernel provides  -c, --read-rc               read the default rc  -C, --read-rc-from=<file>   read the rc from file  -n, --create-rc             create new default rc  -N, --create-rc-to=<file>   create new rc to file             NOTE: pid arguments are not allowed with -n, -N  -d, --device                show the device format //顯示裝置格式  -q, --quiet                 do not display header and footer //不顯示頭尾行  -p, --show-path             show path in the mapping  -A, --range=<low>[,<high>]  limit results to the given range  -h, --help     display this help and exit  -V, --version  output version information and exit //顯示版本 擴充套件格式和裝置格式域:   Address:  start address of map  映像起始地址   Kbytes:  size of map in kilobytes  映像大小(KB)   RSS:  resident set size in kilobytes  駐留集大小(保留記憶體大小)(KB)   Dirty:  dirty pages (both shared and private) in kilobytes  髒頁大小(KB)   Mode:  permissions on map 映像許可權: r=read, w=write, x=execute, s=shared, p=private (copy on write)     Mapping:  file backing the map , or '[ anon ]' for allocated memory, or '[ stack ]' for the program stack.  佔用記憶體的檔案,[anon]為已分配記憶體,[stack]為程式堆疊   Offset:  offset into the file  檔案偏移   Device:  device name (major:minor)  裝置名 # pmap -x 5002
5002:   /opt/jvm/java8/bin/java -Dorg.mortbay.util.URI.charset=UTF-8 -Xmx6008331k -Xms6008331k -XX:MaxPermSize=512m -Djava.library.path=/opt/app/../libswt/linux/x86_64/ ...... e.enc Address           Kbytes     RSS   Dirty Mode  Mapping 0000000000400000       4       4       0 r-x-- java 0000000000600000       4       4       4 rw--- java 000000000120d000     132      24      24 rw---   [ anon ] 0000000651400000 6015488  573320  573320 rw---   [ anon ] ...... ...... 00007fffa449f000     132      44      44 rw---   [ stack ] 00007fffa45fe000       8       4       0 r-x--   [ anon ] ffffffffff600000       4       0       0 r-x--   [ anon ] ---------------- ------- ------- -------  total kB         12052840  856168  806504
pmap -d pid 5002:   /opt/jvm/java8/bin/java -Dorg.mortbay.util.URI.charset=UTF-8 -Xmx6008331k -Xms6008331k -XX:MaxPermSize=512m -Djava.library.path=/opt/app/../libswt/linux/x86_64/ ...... Address           Kbytes Mode  Offset           Device    Mapping 0000000000400000       4 r-x-- 0000000000000000 0fd:00000 java 0000000000600000       4 rw--- 0000000000000000 0fd:00000 java 000000000120d000     132 rw--- 0000000000000000 000:00000   [ anon ] ...... ...... 00007fffa449f000     132 rw--- 0000000000000000 000:00000   [ stack ] 00007fffa45fe000       8 r-x-- 0000000000000000 000:00000   [ anon ] ffffffffff600000       4 r-x-- 0000000000000000 000:00000   [ anon ] mapped: 12014504K    writeable/private: 6589148K    shared: 38336K
最後一行的值 mapped:表示該程序對映的虛擬地址空間大小,也就是該程序預先分配的虛擬記憶體大小,即ps出的vsz writeable/private:表示程序所佔用的私有地址空間大小,也就是該程序實際使用的記憶體大小       shared:表示程序和其他程序共享的記憶體大小 只顯示最後一行: # pmap -d 5002 | tail -1 mapped: 12014504K    writeable/private: 6589148K    shared: 38336K 迴圈顯示最後一行,試試監控程序記憶體佔用情況: # while true; do pmap -d 5002 | tail -1; sleep 3; done

相關推薦

Linux程序佔用記憶體分析pmap

檢視程序的記憶體映像資訊(report memory map of a process) # pmap 用法 pmap [options] PID [PID ...] 選項 Options:  -x, --extended              show

linux 程序佔用記憶體詳解

想必在linux上寫過程式的同學都有分析程序佔用多少記憶體的經歷,或者被問到這樣的問題——你的程式在執行時佔用了多少記憶體(實體記憶體)?通常我們可以通過top命令檢視程序佔用了多少記憶體。這裡我們可以看到VIRT、RES和SHR三個重要的指標,他們分別代表什麼意思呢?這是本文需要跟大家一

linux 程序佔用記憶體查詢

作者: 黃永兵/譯 出處:51CTO.com 閱讀提示:本文是為那些經常疑惑的人準備的,“為什麼一個簡單的KDE文字編輯器要佔用25M記憶體?”導致大多數人認為許多Linux應用程式,特別是KDE或GNOME程式都象ps報告一樣臃腫...【51CTO.com獨家譯文】本文

Linux下實現指令碼監測特定程序佔用記憶體情況

記憶體洩露是C/C++程式設計師經常需要面對的問題,除了有效地經常查找出記憶體洩露的位置外,在嵌入式的開發中,還經常需要確定自己寫的程式是否存在記憶體洩露的情況 Linux系統下,我們可以利用以下命令來獲取特定程序的執行情況: cat /proc/$PID/status 其中

Linux 檢視某一個程序佔用記憶體情況

PID:程序的ID USER:程序所有者 PR:程序的優先級別,越小越優先被執行 NInice:值 VIRT:程序佔用的虛擬記憶體 RES:程序佔用的實體記憶體 SHR:程序使用的共享記憶體 S:程

linux usb列舉過程分析守護程序及其喚醒

usb熱插拔,即usb裝置可以實現即插即用,像U盤一樣,插到電腦裡就可以用,不用時可以直接拔除,這個動作不會影響USB裝置使用效能。        在linx 系統中,usb熱插拔由兩部分方面共同實現,即核心空間和使用者空間,核心由一個守護程序實現,使用者空間由udev 程式

Linux---程序間通訊IPC共享記憶體

程序間通訊(IPC):是指在不同程序之間傳播或交換資訊。 IPC的方式:通常有管道(無名管道、命名管道)、訊息佇列、訊號量、共享儲存、Socket、Streams等(Socket和Streams支援不同主機上的兩個程序IPC) 程序間通訊的目的: 1

Linux 進程管理命令pmap

Linux pmap命令的簡單操作顯示指定進程的內存映射表這個命令僅供了解,我覺得我一輩子不會使用這個命令。這裏我只想說一件事,就是Linux的思想是一切皆文件,那麽進程對應的內存也是保存在文件系統中的,雖然/proc目錄是一個偽文件系統pmap的信息可以說是從/proc/1/maps中取出的Linux 進程

w3wp.exe程序佔用記憶體過高解決方法

解決CPU佔用過多: 1、在IIS中對每個網站進行單獨的應用程式池配置。即互相之間不影響。 2、設定應用程式池的CPU監視,不超過25%(伺服器為4CPU),每分鐘重新整理,超過限制時關閉。 根據w3wp取得是哪一個應用程式池: 1、在工作管理員中增加顯示pid欄位。就可以看到佔用記憶體或者cpu最高

檢視程序佔用記憶體

用top命令可以實時檢視記憶體情況。 還有一種方法就是 cat /proc/PID/status  例如,cat /proc/1353/status  Name:   XXX State:  S (sleeping) Tgid:   1353

Linux逆向---ELF格式分析節頭

1.檢視節頭 段是程式執行的必要組成部分,段可以被分割成若干個節,而節頭表是對這些節的位置和大小的描述,主要是連結和除錯使用的,而對程式的執行卻不是必需的。因為對程式記憶體佈局的描述已經由程式頭表描述了,而節頭表則是對其的補充。即使節頭不存在,節依然存在,只是無法通過節頭去引用。 檢

Linux逆向---ELF格式分析檔案頭和程式頭

在Linux下,可以利用vim編輯器來對編譯生成後的可執行程式進行編輯,比如說把75jne指令改成74je指令,這樣可以在不重新編譯的情況下去修改程式的控制流,這樣玩感覺還是很有意思的,不過也僅限於此,所以我借了一本書想要學學逆向。。結果發現這本書真的難啃。。如果只是讀它的內容的話很快就讀過

linux音訊alsa驅動分析三 解碼器

ASoC Codec DriverASoC解碼器驅動 ================= The codec driver is generic and hardware independent code that configures the codec to provide audio capture

Linux程序記憶體分配

程序     程序是由核心定義的抽象實體,該實體分配用以執行程式的各項系統資源,是擁有資源的基本單位。從核心的角度來看,程序由使用者記憶體空間和一系列核心資料結構組成,其中使用者記憶體空間包含程式程式碼及程式碼所使用的變數(程式段和資料段),而核心資料結構則用於

linux音訊alsa驅動分析二 時鐘

DAI 通過位時鐘BCLK驅動 DAI 也通過幀時鐘驅動 幀時鐘 LRC 或者 frame。  幀時鐘和取樣率是一樣的 The Digital Audio Interface is usually driven by a Bit Clock (often referred  as BCLK). Th

Linux---程序間通訊IPC管道

**程序間通訊(IPC):**是指在不同程序之間傳播或交換資訊。 **IPC的方式:**通常有管道(無名管道、命名管道)、訊息佇列、訊號量、共享儲存、Socket、Streams等(Socket和Streams支援不同主機上的兩個程序IPC) 程序間通訊的目的:

ubuntu 檢視程序pid以及檢視程序佔用記憶體

檢視pid ps laf 檢視使用記憶體情況 ps aux|grep process_name 檢視/proc/process_id/資料夾下的status檔案 top -d 1 -p pid [,pid …] //設定為de

linux核心netfilter模組分析:HOOKs點的註冊及呼叫

-1: 為什麼要寫這個東西?最近在找工作,之前netfilter 這一塊的程式碼也認真地研究過,應該每個人都是這樣的你懂 不一定你能很準確的表達出來。 故一定要化些時間把這相關的東西總結一下。 0:相

Linux---程序間通訊IPC訊息佇列

**程序間通訊(IPC):**是指在不同程序之間傳播或交換資訊。 **IPC的方式:**通常有管道(無名管道、命名管道)、訊息佇列、訊號量、共享儲存、Socket、Streams等(Socket和Streams支援不同主機上的兩個程序IPC) 程序間通訊的目

linux--程序記憶體中的佈局

先從(Linux平臺下)虛擬記憶體管理說起,   寫C程式時,我們經常會列印一個指標地址,說這個指標指向某某記憶體地址.可這些地址是真實實體記憶體地址嗎?不是!這些只是虛擬記憶體地址.   當一個C程式調入記憶體開始執行後,在記憶體中就會產生一個程序.而在多工作業系統中每個