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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java命令行选项6_6.jdk命令行工具

發(fā)布時(shí)間:2024/4/14 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java命令行选项6_6.jdk命令行工具 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

名稱

主要功能

jps

JVM Process Status Tool,顯示指定系統(tǒng)內(nèi)所有HotSpot虛擬機(jī)進(jìn)程

jstat

JVM Statistics Minitoring Tool,用于收集HotSpot虛擬機(jī)各方面的運(yùn)行數(shù)據(jù)

jinfo

Configuration Info for Java,顯示虛擬機(jī)配置信息

jmap

Memory Map for Java,生成虛擬機(jī)的內(nèi)存轉(zhuǎn)儲(chǔ)快照(heapdump)文件

jhat

JVM Heap Dump Browser,用于分析heapdump文件,它會(huì)建立一個(gè)HTTP/HTML服務(wù)器,讓用戶可以在瀏覽器上查看分析結(jié)果

jstack

Stack Trace for Java,顯示虛擬機(jī)的線程快照

jps:虛擬機(jī)進(jìn)程狀況工具

JDK的很多小工具的名稱都參考了Unix命令的命名方式,jps(JVM Process Status Tool)是其中的典型。除了名字像Unix的ps命令外,功能也和ps類似:可以列出正在運(yùn)行的虛擬機(jī)進(jìn)程,并顯示虛擬機(jī)執(zhí)行主類(Main Class,main()函數(shù)所在的類)的名稱,以及這些進(jìn)程的本地虛擬機(jī)的唯一ID(LVMID,Local Virtual Machine Identifier)。雖然功能比較單一,但它是使用頻率最高的JDK命令行工具,因?yàn)槠渌鸍DK工具大多需要輸入它查詢到的LVMID來確定要監(jiān)控的 是哪一個(gè)虛擬機(jī)進(jìn)程。對(duì)于本地虛擬機(jī)進(jìn)程來說,LVMID與操作系統(tǒng)的進(jìn)程ID(PID,Process Identifier)是一致的,使用Windows的任務(wù)管理器或Unix的ps命令也可以查詢到虛擬機(jī)進(jìn)程的LVMID,但如果使用了多個(gè)虛擬機(jī)進(jìn) 程,無法根據(jù)進(jìn)程名稱定位時(shí),那就只能依賴jps命令顯示主類的功能區(qū)才能區(qū)分了。

jps命令格式:

jps [option] [hostid]

jps執(zhí)行樣例:

1

2

3

4

C:\Users\Administrator>jps?-l

5828?D:\Work\Develop\SpringToolSuite\springsource\sts-3.3.0.RELEASE\\plugins

/org

.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar

5680?sun.tools.jps.Jps

jps可以通過RMI協(xié)議查詢開啟了RMI服務(wù)的遠(yuǎn)程虛擬機(jī)進(jìn)程狀態(tài),hostid為RMI注冊(cè)表中注冊(cè)的主機(jī)名。jps的其他常用選項(xiàng)見下表

選項(xiàng)

作用

-q

只輸出LVMID,省略主類的名稱

-m

輸出虛擬機(jī)進(jìn)程啟動(dòng)時(shí)傳遞給主類的main()函數(shù)的參數(shù)

-l

輸出主類的全名,如果進(jìn)程執(zhí)行的是jar包,輸出jar路徑

-v

輸出虛擬機(jī)進(jìn)程啟動(dòng)時(shí)JVM參數(shù)

jstat:虛擬機(jī)統(tǒng)計(jì)信息監(jiān)控工具

jstat(JVM Statistics Monitoring Tool)是用于監(jiān)控虛擬機(jī)各種運(yùn)行狀態(tài)信息的命令行工具。它可以顯示本地或遠(yuǎn)程虛擬機(jī)進(jìn)程中的類裝載、內(nèi)存、垃圾收集、JIT編譯等運(yùn)行數(shù)據(jù),在沒有 GUI圖像界面,只提高了純文本控制臺(tái)環(huán)境的服務(wù)器上,它將是運(yùn)行期定位虛擬機(jī)性能問題的首選工具。

jstat命令格式:

jstat [option vmid [interval[s|ms] [count]] ]

對(duì)于命令格式中的VMID與LVMID需要特別說明下:如果是本地虛擬機(jī)進(jìn)程,VMID和LVMID是一致的,如果是遠(yuǎn)程虛擬機(jī)進(jìn)程,那VMID的格式應(yīng)當(dāng)是:

[protocol:][//] lvmid [@hostname[:port]/servername]

參數(shù)interval和count代表查詢間隔和次數(shù),如果省略這兩個(gè)參數(shù),說明只查詢一次。假設(shè)需要每250毫秒查詢一次進(jìn)程5828垃圾收集狀況,一共查詢5次,那命令行如下:

jstat?-gc?5828?250?5

選項(xiàng)option代表這用戶希望查詢的虛擬機(jī)信息,主要分為3類:類裝載、垃圾收集和運(yùn)行期編譯狀況,具體選項(xiàng)及租用參見下表:

選項(xiàng)

作用

-class

監(jiān)視類裝載、卸載數(shù)量、總空間及類裝載所耗費(fèi)的時(shí)間

-gc

監(jiān)視Java堆狀況,包括Eden區(qū)、2個(gè)Survivor區(qū)、老年代、永久代等的容量

-gccapacity

監(jiān)視內(nèi)容與-gc基本相同,但輸出主要關(guān)注Java堆各個(gè)區(qū)域使用到的最大和最小空間

-gcutil

監(jiān)視內(nèi)容與-gc基本相同,但輸出主要關(guān)注已使用空間占總空間的百分比

-gccause

與-gcutil功能一樣,但是會(huì)額外輸出導(dǎo)致上一次GC產(chǎn)生的原因

-gcnew

監(jiān)視新生代GC的狀況

-gcnewcapacity

監(jiān)視內(nèi)容與-gcnew基本相同,輸出主要關(guān)注使用到的最大和最小空間

-gcold

監(jiān)視老年代GC的狀況

-gcoldcapacity

監(jiān)視內(nèi)容與——gcold基本相同,輸出主要關(guān)注使用到的最大和最小空間

-gcpermcapacity

輸出永久代使用到的最大和最小空間

-compiler

輸出JIT編譯器編譯過的方法、耗時(shí)等信息

-printcompilation

輸出已經(jīng)被JIT編譯的方法

舉個(gè)例子:

1

2

3

C:\Users\Administrator>jstat?-gcutil?5828

S0?????S1?????E??????O??????P?????YGC?????YGCT????FGC????FGCT?????GCT

0.00???0.00???1.82??52.18??99.91????329????4.894???269???80.244???85.139

這是我監(jiān)控到我的eclipse的內(nèi)存狀況。查詢結(jié)果表明:新生代Eden區(qū)(E,表示Eden)使用了1.82%的空間,兩個(gè)Survivor區(qū) (S0、S1,表示Survivor0、Survivor1)里面都是空的,老年代(O,表示Old)和永久代(P,表示Permanent)則分別使用 了52.18%和99.91%的空間。程序運(yùn)行以來共發(fā)生Minor GC(YGC,Young GC)329次,總耗時(shí)(YGCT,Young GC Time)4.894秒,發(fā)生Full GC(FGC)269次,總耗時(shí)(FGCT)80.244秒,所有GC總耗時(shí)(GCT)85.139秒。

使用jstat工具在純文本狀態(tài)下監(jiān)視虛擬機(jī)狀態(tài)的變化,確實(shí)不如后面將會(huì)提到的VisualVM等可視化的監(jiān)視工具直接以圖表展現(xiàn)的那樣直觀。但很多服務(wù)器管理員都習(xí)慣了在文本控制臺(tái)共組哦,直接在控制臺(tái)中使用jstat命令已然是一種常用 的監(jiān)控方式。

jinfo: Java配置信息工具

jinfo(Configuration Info for Java)的作用是實(shí)時(shí)地查看和調(diào)整虛擬機(jī)的各項(xiàng)參數(shù)。使用jps的命令的-v參數(shù)可以查看虛擬機(jī)啟動(dòng)時(shí)顯示指定的參數(shù)列表,但如果想知道未被顯示指定的 參數(shù)的系統(tǒng)默認(rèn)值,除了去找資料外,就只能使用jinfo的-flag選項(xiàng)進(jìn)行查詢了(如果只限于JDK1.6或以上版本的話,使用java -XX:+PrintFlagsFinal查看參數(shù)默認(rèn)值也是一個(gè)很好的選擇),jinfo還可以使用-sysprops選項(xiàng)把虛擬機(jī)進(jìn)程的 System.getProperties()的內(nèi)容打印出來。這個(gè)命令在JDK1.5時(shí)期已經(jīng)隨著Linux版的JDK發(fā)布,當(dāng)時(shí)只提供了信息查詢的功 能,JDK1.6之后,jinfo在Windows和Linux平臺(tái)都有提供,并且加入了運(yùn)行期修改參數(shù)的能力,可以使用-flag[+|-]name或 -flag name=valule修改一部分運(yùn)行期可寫的虛擬機(jī)參數(shù)值。JDK1.6中,jinfo對(duì)于Windows平臺(tái)的功能仍然有較大的限制,只提供了最基本 的-flag選項(xiàng)。

jinfo命令格式:

jinfo [option] pid

執(zhí)行樣例:查詢CMSInitiatingOccupancyFraction參數(shù)值。

1

2

C:\Users\Administrator>jinfo?-flag?CMSInitiatingOccupancyFraction

5828

-XX:CMSInitiatingOccupancyFraction=-

1

jmap: Java內(nèi)存映像工具

jmap(Memory Map for Java)命令用于生產(chǎn)堆轉(zhuǎn)儲(chǔ)快照(一般稱為heapdump或dump文件)。如果不使用jmap命令,要向獲取Java堆轉(zhuǎn)儲(chǔ)快照還有一些比較”暴力 “的手段:譬如-XX:+HeapDumpOnOutOfMemoryError參數(shù),可以讓虛擬機(jī)在OOM異常出現(xiàn)之后自動(dòng)生生成dump文件,通過 -XX:+HeapDumpOnCtrlBreak參數(shù)則可以使用[Ctrl]+[Break]鍵讓虛擬機(jī)生成dump文件,又或者在Linux系統(tǒng)下通 過Kill -3命令發(fā)送進(jìn)程退出信號(hào)”恐嚇“一下虛擬機(jī),也能拿到dump文件。

jmap的作用并不僅僅是為了獲取dump文件,它還可以查詢finalize執(zhí)行隊(duì)列,Java堆和永久代的詳細(xì)信息,如空間使用率、當(dāng)前用的是那種收集器等。

和jinfo命令一樣,jmap有不少功能在Windows平臺(tái)下是受限的,除了生成dump文件的-dump選項(xiàng)和用于查看每個(gè)類的實(shí)例、空間占用統(tǒng)計(jì)的-histo選項(xiàng)所有操作系統(tǒng)都提供外,其余選項(xiàng)只能在Linux/Solaris下使用。

jmap命令格式:

jmap [option] vmid

option選項(xiàng)合法值與具體含義:

選項(xiàng)

作用

-dump

生成Java堆轉(zhuǎn)儲(chǔ)快照。格式為:-dump:[live,]format=b,file=,其中l(wèi)ive子參數(shù)說明是否只dump出存活的對(duì)象

-finalizerinfo

顯示在F-Queue中等待Finalizer線程執(zhí)行finalize()方法的對(duì)象。只在Linux/Solaris平臺(tái)下有效

-heap

顯示Java堆詳細(xì)信息,如使用哪種回收器、參數(shù)配置、分代狀況等。只在Linux/Solaris平臺(tái)下有效

-histo

顯示堆中對(duì)象統(tǒng)計(jì)信息,包括類、實(shí)例數(shù)量和合計(jì)容量

-permstat

以ClassLoader為統(tǒng)計(jì)口徑顯示永久代內(nèi)存狀態(tài)。只在Linux/Solaris平臺(tái)下有效

-F

當(dāng)虛擬機(jī)進(jìn)程對(duì)-dump選項(xiàng)沒有響應(yīng)時(shí),可使用這個(gè)選項(xiàng)強(qiáng)制生成dump快照。只在Linux/Solaris平臺(tái)下有效

樣例:

1

2

3

C:\Users\Administrator>jmap?-dump:

format

=b,

file

=eclipse.bin?5828

Dumping?heap?to?C:\Users\Administrator\eclipse.bin?...

Heap?dump

file

created

這是使用jmap生成一個(gè)正在運(yùn)行的Eclipse的dump快照文件的例子,5828為jps查詢到的LVMID。

jhat:虛擬機(jī)堆轉(zhuǎn)儲(chǔ)快照分析工具

Sun JDK提供了jhat(JVM Heap Analysis Tool)命令與jmap搭配使用,來分析jmap生成的堆轉(zhuǎn)儲(chǔ)快照。jhat內(nèi)置了一個(gè)微型的HTTP/HTML服務(wù)器,生成dump文件的分析結(jié)果 后,可以在瀏覽器中查看,不過實(shí)事求是地說,在實(shí)際工作中,除非真的沒有別的工具可用,否則一般不會(huì)去直接使用jhat命令來分析demp文件,主要原因 有二:意識(shí)一般不會(huì)在部署應(yīng)用程序的服務(wù)器上直接分析dump文件,即使可以這樣做,也會(huì)盡量將dump文件拷貝到其他機(jī)器上進(jìn)行分析,因?yàn)榉治龉ぷ鲿r(shí)一 個(gè)耗時(shí)且消耗硬件資源的過程,既然都要在其他機(jī)器上進(jìn)行,就沒必要收到命令行工具的限制了。另外一個(gè)原因是jhat的分析功能相對(duì)來說很簡(jiǎn) 陋,VisualVM以及專門分析dump文件的Eclipse Memory Analyzer、IBM HeapAnalyzer等工具,都能實(shí)現(xiàn)比jhat更強(qiáng)大更專業(yè)的分析功能。

jstack: Java堆棧跟蹤工具

jstack(Stack Trace for Java)命令用于生成虛擬機(jī)當(dāng)前時(shí)刻的線程快照(一般稱為threaddump或javacore文件)。線程快照就是當(dāng)前虛擬機(jī)內(nèi)每一條線程正在執(zhí)行 的方法堆棧的集合,生成線程快照的主要目的是定位線程出現(xiàn)長(zhǎng)時(shí)間停頓的原因,如線程間死鎖、死循環(huán)、請(qǐng)求外部資源導(dǎo)致的長(zhǎng)時(shí)間等待等都是導(dǎo)致線程長(zhǎng)時(shí)間停 頓的常見原因。線程出現(xiàn)停頓的時(shí)候通過jstack來查看各個(gè)線程的調(diào)用堆棧,就可以知道沒有響應(yīng)的線程到底在后臺(tái)做些什么事情,或者等待著什么資源。

jstack命令格式:

jstack [option] vmid

option選項(xiàng)的合法值與具體意義如下:

選項(xiàng)

作用

-F

當(dāng)正常輸出的請(qǐng)求不被響應(yīng)時(shí),強(qiáng)制輸出線程堆棧

-l

除堆棧外,顯示關(guān)于鎖的附加信息

-m

如果調(diào)用到本地方法的話,可以顯示C/C++的堆棧

總結(jié)

以上是生活随笔為你收集整理的java命令行选项6_6.jdk命令行工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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