天天看點

JVM:檢視java記憶體情況指令

jinfo:可以輸出并修改運作時的java 程序的opts。 

jps:與unix上的ps類似,用來顯示本地的java程序,可以檢視本地運作着幾個java程式,并顯示他們的程序号。 

jstat:一個極強的監視vm記憶體工具。可以用來監視vm記憶體内的各種堆和非堆的大小及其記憶體使用量。 

jmap:列印出某個java程序(使用pid)記憶體内的所有'對象'的情況(如:産生那些對象,及其數量)。 

jconsole:一個java gui監視工具,可以以圖表化的形式顯示各種資料。并可通過遠端連接配接監視遠端的伺服器vm。

詳細:在使用這些工具前,先用jps指令擷取目前的每個jvm程序号,然後選擇要檢視的jvm。 

jstat工具特别強大,有衆多的可選項,詳細檢視堆内各個部分的使用量,以及加載類的數量。使用時,需加上檢視程序的程序id,和所選參數。以下詳細介紹各個參數的意義。 

jstat -class pid:顯示加載class的數量,及所占空間等資訊。 

jstat -compiler pid:顯示vm實時編譯的數量等資訊。 

jstat -gc pid:可以顯示gc的資訊,檢視gc的次數,及時間。其中最後五項,分别是young gc的次數,young gc的時間,full gc的次數,full gc的時間,gc的總時間。 

jstat -gccapacity:可以顯示,vm記憶體中三代(young,old,perm)對象的使用和占用大小,如:pgcmn顯示的是最小perm的記憶體使用量,pgcmx顯示的是perm的記憶體最大使用量,pgc是目前新生成的perm記憶體占用量,pc是但前perm記憶體占用量。其他的可以根據這個類推, oc是old内純的占用量。 

jstat -gcnew pid:new對象的資訊。 

jstat -gcnewcapacity pid:new對象的資訊及其占用量。 

jstat -gcold pid:old對象的資訊。 

jstat -gcoldcapacity pid:old對象的資訊及其占用量。 

jstat -gcpermcapacity pid: perm對象的資訊及其占用量。 

jstat -util pid:統計gc資訊統計。 

jstat -printcompilation pid:目前vm執行的資訊。 

除了以上一個參數外,還可以同時加上 兩個數字,如:jstat -printcompilation 3024 250 6是每250毫秒列印一次,一共列印6次,還可以加上-h3每三行顯示一下标題。

jmap是一個可以輸出所有記憶體中對象的工具,甚至可以将vm 中的heap,以二進制輸出成文本。 

指令:jmap -dump:format=b,file=heap.bin <pid> 

file:儲存路徑及檔案名 

pid:程序編号 

•jmap -histo:live  pid| less :堆中活動的對象以及大小 

•jmap -heap pid : 檢視堆的使用狀況資訊

jinfo:的用處比較簡單,就是能輸出并修改運作時的java程序的運作參數。用法是jinfo -opt pid 如:檢視2788的maxperm大小可以用 jinfo -flag maxpermsize 2788。

jconsole是一個用java寫的gui程式,用來監控vm,并可監控遠端的vm,非常易用,而且功能非常強。使用方法:指令行裡打 jconsole,選則程序就可以了。 

jconsole中關于記憶體分區的說明。

eden space (heap): 記憶體最初從這個線程池配置設定給大部分對象。 

survivor space (heap):用于儲存在eden space記憶體池中經過垃圾回收後沒有被回收的對象。 

tenured generation (heap):用于保持已經在 survivor space記憶體池中存在了一段時間的對象。 

permanent generation (non-heap): 儲存虛拟機自己的靜态(refective)資料,例如類(class)和方法(method)對象。java虛拟機共享這些類資料。這個區域被分割為隻讀的和隻寫的, 

code cache (non-heap):hotspot java虛拟機包括一個用于編譯和儲存本地代碼(native code)的記憶體,叫做“代碼緩存區”(code cache)

•jstack ( 檢視jvm線程運作狀态,是否有死鎖現象等等資訊) : jstack pid : thread dump 

•jstat -gcutil  pid  1000 100  : 1000ms統計一次gc情況統計100次;

另外推薦一款檢視jmap dump 的記憶體對象工具 memoryanalyzer 

特别說明:尊重作者的勞動成果,轉載請注明出處哦~~~http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt265