日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jps、jinfo、jstat、jstack、jmap、jconsole等命令简介

發(fā)布時間:2023/12/9 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jps、jinfo、jstat、jstack、jmap、jconsole等命令简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標準>>>

JDK提供了幾個很實用的工具,如下:

jinfo:觀察運行中的java程序的運行環(huán)境參數(shù):參數(shù)包括Java System屬性和JVM命令行參數(shù),java class path等信息。命令格式:jinfo 進程pid
jps:用來顯示本地的java進程,可以查看本地運行著幾個java程序,并顯示他們的進程號。命令格式:jps?? 或 jps 遠程服務ip地址??? (默認端口1099)
jstat:一個極強的監(jiān)視VM內(nèi)存工具。可以用來監(jiān)視VM內(nèi)存內(nèi)的各種堆和非堆的大小及其內(nèi)存使用量。

jstack:可以觀察到jvm中當前所有線程的運行情況和線程當前狀態(tài)。, 如果現(xiàn)在運行的java程序呈現(xiàn)hung的狀態(tài),jstack是非常有用的。命令格式:jstack 進程pid
當程序出現(xiàn)死鎖的時候,使用命令:jstack 進程ID < jstack.log,然后在jstack.log文件中,搜索關(guān)鍵字“BLOCKED”,定位到引起死鎖的地方。

jmap:觀察運行中的jvm物理內(nèi)存的占用情況(如:產(chǎn)生哪些對象,及其數(shù)量)。命令格式:jmap [option] pid

????? option參數(shù)如下:
???????? ??? -heap
:打印jvm heap的情況
????????? ?? -histo:打印jvm heap的直方圖。其輸出信息包括類名,對象數(shù)量,對象占用大小。
?????????? ? -histo:live :同上,但是只答應存活對象的情況
???????????? -permstat:打印permanent generation heap情況

? ? ?? 使用jmap進行 heap dump的例子: jmap?-dump:format=b,file=???

? ? ?? 打印內(nèi)存統(tǒng)計圖:jmap -histo:live

???????結(jié)果中每行顯示了當前堆中每種類類型的信息,包含被分配的實例個數(shù)及其消耗的字節(jié)數(shù)。選項“l(fā)ive”,表示只統(tǒng)計存活的對象

需要注意的是,jmap不是運行分析工具,在生成統(tǒng)計圖時JVM可能會暫停,因此當生成統(tǒng)計圖時需要確認這種暫停對程序是可接受的。
jconsole:一個java GUI監(jiān)視工具,可以以圖表化的形式顯示各種數(shù)據(jù)。并可通過遠程連接監(jiān)視遠程的服務器VM。

這些命令的使用,見官方文檔:
jps:http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jps.html
jstat:http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstat.html

jstack:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstack.html
jmap:http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jmap.html
jconsole:http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html

?jstat的一些參數(shù):

參數(shù)名稱

描述

class

統(tǒng)計class loader行為信息。命令例子:jstat -class?pid 1000 10 (每隔1秒監(jiān)控一次,一共做10次),輸出內(nèi)容,含義如下:

Loaded Number of classes loaded.
Bytes Number of Kbytes loaded.
Unloaded Number of classes unloaded.
Bytes Number of Kbytes unloaded.
Time Time spent performing class load and unload operations.

compile

統(tǒng)計編譯行為信息。

gc

輸出每個堆區(qū)域的當前可用空間以及已用空間(伊甸園,幸存者等等),GC執(zhí)行的總次數(shù),GC操作累計所花費的時間。

gccapactiy

輸出每個堆區(qū)域的最小空間限制(ms)/最大空間限制(mx),當前大小,每個區(qū)域之上執(zhí)行GC的次數(shù)。(不輸出當前已用空間以及GC執(zhí)行時間)。

gccause

輸出-gcutil提供的信息以及最后一次執(zhí)行GC的發(fā)生原因和當前所執(zhí)行的GC的發(fā)生原因

gcnew

輸出新生代空間的GC性能數(shù)據(jù)

gcnewcapacity

輸出新生代空間的大小的統(tǒng)計數(shù)據(jù)。

gcold

輸出老年代空間的GC性能數(shù)據(jù)。

gcoldcapacity

輸出老年代空間的大小的統(tǒng)計數(shù)據(jù)。

gcpermcapacity

輸出持久帶空間的大小的統(tǒng)計數(shù)據(jù)。

gcutil

輸出每個堆區(qū)域使用占比,以及GC執(zhí)行的總次數(shù)和GC操作所花費的事件。

你可以只關(guān)心那些最常用的命令,你會經(jīng)常用到 -gcutil (或-gccause), -gc and –gccapacity。

· ????????-gcutil 被用于檢查堆間的使用情況,GC執(zhí)行的次數(shù)以及GC操作所花費的時間。

· ????????-gccapacity以及其他的參數(shù)可以用于檢查實際分配內(nèi)存的大小。

不同的jstat參數(shù)輸出不同類型的列,如下表所示,根據(jù)你使用的”jstat option”會輸出不同列的信息。

說明 Jstat參數(shù)
S0C 輸出Survivor0空間的大小。單位KB。 -gc
-gccapacity
-gcnew
-gcnewcapacity
S1C 輸出Survivor1空間的大小。單位KB。 -gc
-gccapacity
-gcnew
-gcnewcapacity
S0U 輸出Survivor0已用空間的大小。單位KB。 -gc
-gcnew
S1U 輸出Survivor1已用空間的大小。單位KB。 -gc
-gcnew
EC 輸出Eden空間的大小。單位KB。 -gc
-gccapacity
-gcnew
-gcnewcapacity
EU 輸出Eden已用空間的大小。單位KB。 -gc
-gcnew
OC 輸出老年代空間的大小。單位KB。 -gc
-gccapacity
-gcold
-gcoldcapacity
OU 輸出老年代已用空間的大小。單位KB。 -gc
-gcold
PC 輸出持久代空間的大小。單位KB。 -gc
-gccapacity
-gcold
-gcoldcapacity
-gcpermcapacity
PU 輸出持久代已用空間的大小。單位KB。 -gc
-gcold
YGC 新生代空間GC時間發(fā)生的次數(shù)。 -gc
-gccapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcpermcapacity
-gcutil
-gccause
YGCT 新生代GC處理花費的時間。 -gc
-gcnew
-gcutil
-gccause
FGC full GC發(fā)生的次數(shù)。 -gc
-gccapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcpermcapacity
-gcutil
-gccause
FGCT full GC操作花費的時間 -gc
-gcold
-gcoldcapacity
-gcpermcapacity
-gcutil
-gccause
GCT GC操作花費的總時間。 -gc
-gcold
-gcoldcapacity
-gcpermcapacity
-gcutil
-gccause
NGCMN 新生代最小空間容量,單位KB。 -gccapacity
-gcnewcapacity
NGCMX 新生代最大空間容量,單位KB。 -gccapacity
-gcnewcapacity
NGC 新生代當前空間容量,單位KB。 -gccapacity
-gcnewcapacity
OGCMN 老年代最小空間容量,單位KB。 -gccapacity
-gcoldcapacity
OGCMX 老年代最大空間容量,單位KB。 -gccapacity
-gcoldcapacity
OGC 老年代當前空間容量制,單位KB。 -gccapacity
-gcoldcapacity
PGCMN 持久代最小空間容量,單位KB。 -gccapacity
-gcpermcapacity
PGCMX 持久代最大空間容量,單位KB。 -gccapacity
-gcpermcapacity
PGC 持久代當前空間容量,單位KB。 -gccapacity
-gcpermcapacity
PC 持久代當前空間大小,單位KB -gccapacity
-gcpermcapacity
PU 持久代當前已用空間大小,單位KB -gc
-gcold
LGCC 最后一次GC發(fā)生的原因 -gccause
GCC 當前GC發(fā)生的原因 -gccause
TT 老年化閾值。被移動到老年代之前,在新生代空存活的次數(shù)。 -gcnew
MTT 最大老年化閾值。被移動到老年代之前,在新生代空存活的次數(shù)。 -gcnew
DSS Adequate size of survivor in KB
幸存者區(qū)所需空間大小,單位KB。
-gcnew
參考文章:http://www.importnew.com/2057.html

下面內(nèi)容,摘自:http://jameswxx.javaeye.com/blog/731763

在本機執(zhí)行 jstat -gcutil 340 10000,這個命令是每個10秒鐘輸出一次jvm的gc信息,10000指的是間隔時間為10000毫秒。屏幕上顯示如下信息(我只取了第一行,因為是按的一定頻率顯示,所以實際執(zhí)行的時候,會有很多行):

?? S0????? ?S1?????? E??????? O????????? P????? ?YGC???? YGCT??? FGC??? FGCT???? GCT??
?54.62?? 0.00? 42.87? 43.52? 86.24?? 1792??? 5.093?? ? 33?????? 7.670?? 12.763

[xhtml] view plain copy
  • S0:新生代的susvivor0區(qū),空間使用率為54..62%??
  • S1:新生代的susvivor1區(qū),空間使用率為0.00%(因為還沒有執(zhí)行第二次minor收集)??
  • E:eden區(qū),空間使用率42.87%??
  • O:舊生代,空間使用率43.52%??
  • P:持久帶,空間使用率86.24%??
  • YGC:minor?gc執(zhí)行次數(shù)1792次??
  • YGCT:minor?gc耗費的時間5.093毫秒??
  • FGC:full?gc執(zhí)行次數(shù)33??
  • FGCT:full?gc耗費的時間7.670毫秒??
  • GCT:gc耗費的總時間12.763毫秒???
  • </p>

    如果young gc和full gc能夠正常發(fā)生,而且都能有效回收內(nèi)存,常駐內(nèi)存區(qū)變化不明顯,則說明java內(nèi)存釋放情況正常,垃圾回收及時,java內(nèi)存泄露的幾率就會大大降低。但也不能說明一定沒有內(nèi)存泄露。


    每次young gc消耗的時間,可以用相間隔的兩行YGCT相減得到。每次full gc消耗的時間,可以用相隔的兩行FGCT相減得到

    官方文檔的一個例子:

    [plain] view plain copy
  • Using?the?gcutil?option??
  • This?example?attaches?to?lvmid?21891?and?takes?7?samples?at?250?millisecond?intervals?and?displays?the?output?as?specified?by?the?-gcutil?option.??
  • jstat?-gcutil?21891?250?7??
  • ??S0?????S1?????E??????O??????P?????YGC????YGCT????FGC????FGCT?????GCT??
  • ?12.44???0.00??27.20???9.49??96.70????78????0.176?????5????0.495????0.672??
  • ?12.44???0.00??62.16???9.49??96.70????78????0.176?????5????0.495????0.672??
  • ?12.44???0.00??83.97???9.49??96.70????78????0.176?????5????0.495????0.672??
  • ??0.00???7.74???0.00???9.51??96.70????79????0.177?????5????0.495????0.673??
  • ??0.00???7.74??23.37???9.51??96.70????79????0.177?????5????0.495????0.673??
  • ??0.00???7.74??43.82???9.51??96.70????79????0.177?????5????0.495????0.673??
  • ??0.00???7.74??58.11???9.51??96.71????79????0.177?????5????0.495????0.673??
  • The?output?of?this?example?shows?that?a?young?generation?collection?occurred?between?the?3rd?and?4th?sample.?The?collection?took?0.001?seconds?and?promoted?objects?from?the?eden?space?(E)?to?the?old?space?(O),?resulting?in?an?increase?of?old?space?utilization?from?9.49%?to?9.51%.?Before?the?collection,?the?survivor?space?was?12.44%?utilized,?but?after?this?collection?it?is?only?7.74%?utilized. ?
  • 轉(zhuǎn)載于:https://my.oschina.net/guoenzhou/blog/389687

    總結(jié)

    以上是生活随笔為你收集整理的jps、jinfo、jstat、jstack、jmap、jconsole等命令简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。