ps aux命令執行結果的幾個列的資訊的含義
user 程序所屬使用者
pid 程序id
%cpu 程序占用cpu百分比
%mem 程序占用記憶體百分比
vsz 虛擬記憶體占用大小 單位:kb(killobytes)
rss 實際記憶體占用大小 單位:kb(killobytes)
tty 終端型別
stat 程序狀態
start 程序啟動時刻
time 程序執行時長,程序已經消耗的cpu時間
command 啟動程序的命令的名稱和引數
top 命令 vsz,rss,tty,stat, virt,res,shr,data的含義
virt:virtual memory usage 虛擬記憶體
1、程序「需要的」虛擬記憶體大小,包括程序使用的庫、**、資料等
2、假如程序申請100m的記憶體,但實際只使用了10m,那麼它會增長100m,而不是實際的使用量
res:resident memory usage 常駐記憶體
1、程序當前使用的記憶體大小,但不包括swap out
2、包含其他程序的共享
3、如果申請100m的記憶體,實際使用10m,它只增長10m,與virt相反
4、關於庫占用記憶體的情況,它只統計載入的庫檔案所佔記憶體大小
shr:shared memory 共享記憶體
1、除了自身程序的共享記憶體,也包括其他程序的共享記憶體
2、雖然程序只使用了幾個共享庫的函式,但它包含了整個共享庫的大小
3、計算某個程序所佔的物理記憶體大小公式:res – shr
4、swap out後,它將會降下來
data
1、資料占用的記憶體。如果top沒有顯示,按f鍵可以顯示出來。
2、真正的該程式要求的資料空間,是真正在執行中要使用的。
top 執行中可以通過 top 的內部命令對程序的顯示方式進行控制。內部命令如下:
s – 改變畫面更新頻率
l – 關閉或開啟第一部分第一行 top 資訊的表示
t – 關閉或開啟第一部分第二行 tasks 和第三行 cpus 資訊的表示
m – 關閉或開啟第一部分第四行 mem 和 第五行 swap 資訊的表示
n – 以 pid 的大小的順序排列表示程序列表
p – 以 cpu 佔用率大小的順序排列程序列表
m – 以記憶體佔用率大小的順序排列程序列表
h – 顯示幫助
n – 設定在程序列表所顯示程序的數量
q – 退出 top
s – 改變畫面更新週期
序號 列名 含義
a pid 程序id
b ppid 父程序id
c ruser real user name
d uid 程序所有者的使用者id
e user 程序所有者的使用者名稱
f group 程序所有者的組名
g tty 啟動程序的終端名。不是從終端啟動的程序則顯示為 ?
h pr 優先順序
i ni nice值。負值表示高優先順序,正值表示低優先順序
j p 最後使用的cpu,僅在多cpu環境下有意義
k %cpu 上次更新到現在的cpu時間占用百分比
l time 程序使用的cpu時間總計,單位秒
m time+ 程序使用的cpu時間總計,單位1/100秒
n %mem 程序使用的物理記憶體百分比
o virt 程序使用的虛擬記憶體總量,單位kb。virt=swap+res
p swap 程序使用的虛擬記憶體中,被換出的大小,單位kb。
q res 程序使用的、未被換出的物理記憶體大小,單位kb。res=code+data
r code 可執行**占用的物理記憶體大小,單位kb
s data 可執行**以外的部分(資料段+棧)占用的物理記憶體大小,單位kb
t shr 共享記憶體大小,單位kb
u nflt 頁面錯誤次數
v ndrt 最後一次寫入到現在,被修改過的頁面數。
w s 程序狀態。(d=不可中斷的睡眠狀態,r=執行,s=睡眠,t=跟蹤/停止,z=殭屍程序)
x command 命令名/命令列
y wchan 若該程序在睡眠,則顯示睡眠中的系統函式名
z flags 任務標誌,參考 sched.h
預設情況下僅顯示比較重要的 pid、user、pr、ni、virt、res、shr、s、%cpu、%mem、time+、command 列。
可以通過下面的快捷鍵來更改顯示內容。
通過 f 鍵可以選擇顯示的內容。按 f 鍵之後會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最後按回車鍵確定。
按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 a-z 可以將相應的列向左移動。
最後按回車鍵確定。
按大寫的 f 或 o 鍵,然後按 a-z 可以將程序按照相應的列進行排序。而大寫的 r 鍵可以將當前的排序倒轉。
3. ps命令
ps -p 程序id -o vsz,rss
vsz rss
3701784 413924
vsz是指已分配的線性空間大小,這個大小通常並不等於程式實際用到的記憶體大小,
產生這個的可能性很多,比如記憶體對映,共享的動態庫,或者向系統申請了更多的堆,都會擴充套件線性空間大小。
rss 是resident set size,常駐記憶體大小,即程序實際占用的物理記憶體大小
jmap命令
[root@iz2zee010yjby4eyu51q0xz conf]# jmap -heap 20041
attaching to process id 20041, please wait...
debugger attached successfully.
server compiler detected.
jvm version is 25.181-b13
using thread-local object allocation.
parallel gc with 2 thread(s)
heap configuration:
minheapfreeratio = 0
maxheapfreeratio = 100
maxheapsize = 2147483648 (2048.0mb) #當前jvm最大堆大小
newsize = 89128960 (85.0mb)
maxnewsize = 715653120 (682.5mb)
oldsize = 179306496 (171.0mb)
newratio = 2
survivorratio = 8
metaspacesize = 21807104 (20.796875mb)
compressedclassspacesize = 1073741824 (1024.0mb)
maxmetaspacesize = 17592186044415 mb
g1heapregionsize = 0 (0.0mb)
heap usage:
ps young generation
eden space:
capacity = 67108864 (64.0mb)
used = 53819296 (51.326080322265625mb)
free = 13289568 (12.673919677734375mb)
80.19700050354004% used
from space:
capacity = 10485760 (10.0mb)
used = 9489872 (9.050247192382812mb)
free = 995888 (0.9497528076171875mb)
90.50247192382812% used
to space:
capacity = 11010048 (10.5mb)
used = 0 (0.0mb)
free = 11010048 (10.5mb)
0.0% used
ps old generation
capacity = 179306496 (171.0mb)
used = 35467768 (33.82469940185547mb)
free = 143838728 (137.17530059814453mb)
19.78052596599735% used
15392 interned strings occupying 1677832 bytes.
[root@iz2zee010yjby4eyu51q0xz conf]#
channel(socket) closed from remote host(dix) at 10:18:29.
linux linux程序記憶體分析
在產品的開發中,通過對當前系統消耗記憶體總量的統計,可以對產品所需記憶體總量進行精確的評估,從而選擇合適的記憶體晶元與大小,降低產品的成本。在遇到記憶體洩露類問題時,經常會對此束手無策,本文通過對proc下程序相關的檔案進行分析,精確評估系統消耗記憶體的大小,還可以對記憶體洩露類問題的解決提供一種定...
Linux pmap 程序記憶體分析
linux pmap root hankyoon pmap help usage pmap options pid pid options x,extended show details 顯示擴充套件格式 x show even more details warning format changes...
java陣列記憶體分析
首先學習幾個單詞 index 索引 bounds 邊界 assigned 指定 陣列 相同資料型別的有序集合 陣列也是物件 長度是不可變的,越界報array index out of bounds exception 陣列語法 宣告int a int a 建立 new int 4 初始化 預設初始化...