1课锌、Jps:虛擬機(jī)進(jìn)程狀況工具
列出正在運(yùn)行的虛擬機(jī)進(jìn)程,并顯示虛擬機(jī)執(zhí)行主類(Main class 函數(shù)所在的類)的名稱以及這些進(jìn)程的本地虛擬機(jī)唯一ID(LVMID)
jps [options] [hostid]
jps可以通過(guò)RMI協(xié)議查詢開(kāi)啟了RMI服務(wù)的遠(yuǎn)程虛擬機(jī)進(jìn)程狀態(tài)凛俱,hostid就是RMI注冊(cè)表中注冊(cè)的主機(jī)名敛苇。
選項(xiàng) | 作用 | 示例 |
---|---|---|
-q | 只輸出LVMID梳码,省略主類的名稱 | |
-m | 輸出虛擬機(jī)進(jìn)程啟動(dòng)時(shí)候傳遞給朱磊main()函數(shù)的參數(shù) |
配置main啟動(dòng)參數(shù).png
jps-m.png
|
-l | 輸出主類的全名斜筐,如果進(jìn)程執(zhí)行的是Jar包,輸出Jar路徑 | jps-l.png
|
-v | 輸出虛擬機(jī)進(jìn)程啟動(dòng)時(shí)JVM參數(shù) |
設(shè)置VM參數(shù)
image.png
|
2邓夕、 jstat: 虛擬機(jī)統(tǒng)計(jì)信息監(jiān)視工具
用于監(jiān)視虛擬機(jī)各種運(yùn)行狀態(tài)信息的命令工具 刘莹,它可以 顯示本地或者遠(yuǎn)程虛擬機(jī)中的 類裝載、內(nèi)存焚刚、垃圾收集点弯、JIT編譯等運(yùn)行數(shù)據(jù)
jstat 命令格式
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
如果 是本地虛擬機(jī)進(jìn)程,則vmid跟LVMID一致矿咕,如果是遠(yuǎn)程虛擬機(jī)抢肛,則VMID的格式應(yīng)當(dāng)是:
[protocol:][//] lvmid[@hostname[:port]/servername]
interval 和 count表示 查詢間隔和次數(shù),如果省略這兩個(gè)參數(shù)痴腌,則只查一次
參數(shù)解釋:
option 可以從下面參數(shù)中選擇
-class 顯示ClassLoad的相關(guān)信息雌团;
-compiler 顯示JIT編譯的相關(guān)信息;
-gc 顯示和gc相關(guān)的堆信息士聪;
-gccapacity 顯示各個(gè)代的容量以及使用情況;
-gccause 顯示垃圾回收的相關(guān)信息(通-gcutil),同時(shí)顯示最后一次或當(dāng)前正在發(fā)生的垃圾回收的誘因猛蔽;
-gcnew 顯示新生代信息剥悟;
-gcnewcapacity 顯示新生代大小和使用情況灵寺;
-gcold 顯示老年代和永久代的信息;
-gcoldcapacity 顯示老年代的大星凇略板;
-gcpermcapacity 顯示永久代的大小慈缔;
-gcutil 顯示垃圾收集信息叮称;
-printcompilation輸出JIT編譯的方法信息;
-t 可以在打印的列加上Timestamp列藐鹤,用于顯示系統(tǒng)運(yùn)行的時(shí)間
-h 可以在周期性數(shù)據(jù)數(shù)據(jù)的時(shí)候瓤檐,可以在指定輸出多少行以后輸出一次表頭
interval 執(zhí)行每次的間隔時(shí)間,單位為毫秒
count 用于指定輸出多少次記錄娱节,缺省則會(huì)一直打印
例如:每250毫秒查詢一次進(jìn)程2746垃圾收集狀況挠蛉,一共查詢20次,那么命令是
jstat -gc 2746 250 20
3肄满、jmap:Java內(nèi)存映像工具
jmap用于生成堆轉(zhuǎn)儲(chǔ)快照谴古,還可以查詢finalize執(zhí)行隊(duì)列、Java堆和永久代的詳細(xì)信息稠歉,如空間使用率掰担、當(dāng)前使用哪種收集器等;
jmap [option] <pid>
(to connect to running process)
jmap [option] <executable <core>
(to connect to a core file)
jmap [option] [server_id@]<remote server IP or hostname>
(to connect to remote debug server)
基本參數(shù):
-dump:[live,]format=b,file=<filename> 使用hprof二進(jìn)制形式,輸出jvm的heap內(nèi)容到文件=. live子選項(xiàng)是可選的怒炸,假如指定live選項(xiàng),那么只輸出活的對(duì)象到文件.
-finalizerinfo 打印正等候回收的對(duì)象的信息.
-heap 打印heap的概要信息带饱,GC使用的算法,heap的配置及wise heap的使用情況.
-histo[:live] 打印每個(gè)class的實(shí)例數(shù)目,內(nèi)存占用,類全名信息. VM的內(nèi)部類名字開(kāi)頭會(huì)加上前綴”*”. 如果live子參數(shù)加上后,只統(tǒng)計(jì)活的對(duì)象數(shù)量.
-permstat 打印classload和jvm heap長(zhǎng)久層的信息. 包含每個(gè)classloader的名字,活潑性,地址,父classloader和加載的class數(shù)量. 另外,內(nèi)部String的數(shù)量和占用內(nèi)存數(shù)也會(huì)打印出來(lái).
-F 強(qiáng)迫.在pid沒(méi)有相應(yīng)的時(shí)候使用-dump或者-histo參數(shù). 在這個(gè)模式下,live子參數(shù)無(wú)效.
-h | -help 打印輔助信息
-J 傳遞參數(shù)給jmap啟動(dòng)的jvm.
pid 需要被打印配相信息的java進(jìn)程id,創(chuàng)業(yè)與打工的區(qū)別 - 博文預(yù)覽,可以用jps查問(wèn).
例如 生成快照
jmap -dump:format=b,file=dumpfiletest.txt -F 39182
由于在我沒(méi)有 加 -F 的時(shí)候失敗了
39182: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding
所以加上-F強(qiáng)制他生成快照了横媚;
4纠炮、jhat:虛擬機(jī)堆轉(zhuǎn)儲(chǔ)快照分析工具
jhat與jmap搭配使用,jhat分析jmap生成的堆轉(zhuǎn)儲(chǔ)快照灯蝴,jhat內(nèi)置一個(gè)微型的http/html服務(wù)器恢口,分析dump結(jié)果后可以在瀏覽器中查看,已過(guò)一般不會(huì)用這個(gè)來(lái)分析穷躁,也不會(huì)在當(dāng)前服務(wù)器分析耕肩,一般都是講dump文件轉(zhuǎn)儲(chǔ)到另外一臺(tái)專門的服務(wù)器去分析文件
例如:分析jmap生成的dump文件
jhat dumpfiletest.txt
然后打開(kāi)瀏覽器訪問(wèn) 127.0.0.1:7000
5、Jstack :Java堆棧跟蹤工具
jstack用于打印出給定的java進(jìn)程ID或core file或遠(yuǎn)程調(diào)試服務(wù)的Java堆棧信息问潭,如果是在64位機(jī)器上猿诸,需要指定選項(xiàng)"-J-d64",Windows的jstack使用方式只支持以下的這種方式:
jstack [-l] pid
如果java程序崩潰生成core文件狡忙,jstack工具可以用來(lái)獲得core文件的java stack和native stack的信息梳虽,從而可以輕松地知道java程序是如何崩潰和在程序何處發(fā)生問(wèn)題。另外灾茁,jstack工具還可以附屬到正在運(yùn)行的java程序中窜觉,看到當(dāng)時(shí)運(yùn)行的java程序的java stack和native stack的信息, 如果現(xiàn)在運(yùn)行的java程序呈現(xiàn)hung的狀態(tài)谷炸,jstack是非常有用的。
命令格式
jstack [ option ] pid
jstack [ option ] executable core
jstack [ option ] [server-id@]remote-hostname-or-IP
常用參數(shù)
1)禀挫、options:
executable Java executable from which the core dump was produced.
(可能是產(chǎn)生core dump的java可執(zhí)行程序)
core 將被打印信息的core dump文件
remote-hostname-or-IP 遠(yuǎn)程debug服務(wù)的主機(jī)名或ip
server-id 唯一id,假如一臺(tái)主機(jī)上多個(gè)遠(yuǎn)程debug服務(wù)
2)旬陡、基本參數(shù):
-F當(dāng)’jstack [-l] pid’沒(méi)有相應(yīng)的時(shí)候強(qiáng)制打印棧信息
-l長(zhǎng)列表. 打印關(guān)于鎖的附加信息,例如屬于java.util.concurrent的ownable synchronizers列表.
-m打印java和native c/c++框架的所有棧信息.
-h | -help打印幫助信息
pid 需要被打印配置信息的java進(jìn)程id,可以用jps查詢.