JAVA自帶工具使用說明

本文所列是基於JDK1.6版本,對於不同版本的JDK執行效果和命令參數等可能不完全一致。
jmap
命令:
jmap [ option ] pid
jmap [ option ] executable core
jmap [ option ] [server-id@]remote-hostname-or-IP
功能說明:
Jmap可以將指定的JVM(通過進程號、CORE文件或者調試服務器指定)的堆內內存使用情況(如堆內各個對象的數量)打印出來。如果該進程是運行於64位的JAVA平臺,需要指定-J-64參數。
在開銷方面,jmap引起的額外開銷很小,類似於一次full gc。
參數說明:
不帶任何參數:打印出指定JAVA虛擬機中的共享對象。包括了加載的每個共享對象的起始地址、大小和完整的路徑。
如:
[webjoin@dd webjoin]$ jmap 7121
Attaching to process ID 7121, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 11.0-b11
0x06000000 5294K /webjoin/local/java/jre/lib/i386/client/libjvm.so
0x08048000 46K /webjoin/local/java/bin/java
0xb4ae5000 93K /webjoin/local/java/jre/lib/i386/libnet.so
0xb739a000 74K /webjoin/local/java/jre/lib/i386/libzip.so
0xb73ab000 184K /webjoin/local/java/jre/lib/i386/libjava.so
0xb73d0000 55K /webjoin/local/java/jre/lib/i386/libverify.so
……
-dump:[live,]format=b,file=<filename>:以hprof二進制文件類型將虛擬機堆的信息保存到指定的文件中。如果指定了 live 參數,將只會打印處於生存狀態的對象信息(保存虛擬機信息前強制虛擬機執行full gc)。可以通過 jhat 命令瀏覽保存的文件(具體參見後面的jhat的使用說明)。
如:
[webjoin@dd webjoin]$ jmap -dump:format=b,file=heap_dump.log 7121
Dumping heap to /webjoin/heap_dump.log ...
Heap dump file created
-finalizerinfo:打印當前正在等待最終化的對象。
如:
[webjoin@dd webjoin]$ jmap -finalizerinfo 7121
Attaching to process ID 7121, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 11.0-b11
Number of objects pending for finalization: 0
-heap:打印虛擬機堆的概要信息,堆的配置信息以及堆中各代的詳細信息
如:
[webjoin@dd webjoin]$ jmap -heap 7121
Attaching to process ID 7121, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 11.0-b11
using thread-local object allocation.
Mark Sweep Compact GC
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 67108864 (64.0MB)
NewSize = 1048576 (1.0MB)
MaxNewSize = 4294901760 (4095.9375MB)
OldSize = 4194304 (4.0MB)
NewRatio = 12
SurvivorRatio = 8
PermSize = 12582912 (12.0MB)
MaxPermSize = 67108864 (64.0MB)
Heap Usage:
New Generation (Eden + 1 Survivor Space):
capacity = 983040 (0.9375MB)
used = 747960 (0.7133102416992188MB)
free = 235080 (0.22418975830078125MB)
76.08642578125% used
Eden Space:
capacity = 917504 (0.875MB)
used = 746904 (0.7123031616210938MB)
free = 170600 (0.16269683837890625MB)
81.40607561383929% used
From Space:
capacity = 65536 (0.0625MB)
used = 1056 (0.001007080078125MB)
free = 64480 (0.061492919921875MB)
1.611328125% used
To Space:
capacity = 65536 (0.0625MB)
used = 0 (0.0MB)
free = 65536 (0.0625MB)
0.0% used
tenured generation:
capacity = 6336512 (6.04296875MB)
used = 4027552 (3.840972900390625MB)
free = 2308960 (2.201995849609375MB)
63.56102537168714% used
Perm Generation:
capacity = 12582912 (12.0MB)
used = 5205408 (4.964263916015625MB)
free = 7377504 (7.035736083984375MB)
41.368865966796875% used
-histo[:live]:打印堆中所有對象的數量、佔用內存大小以及對象的完整名成。內部類將以*作爲前綴。如果指定了live參數,則將只有存活的對象被記錄(執行前將會強制虛擬機完成一次FullGC)
如:
[webjoin@dd webjoin]$ jmap -histo:live 7121|more
num #instances #bytes class name
----------------------------------------------
1: 10754 1408464 <constMethodKlass>
2: 15626 1263480 [C
3: 10754 860384 <methodKlass>
4: 16263 739600 <symbolKlass>
5: 854 577056 <constantPoolKlass>
6: 20943 502632 java.lang.String
7: 954 433912 [B
8: 1976 420672 [I
……
-permstat:打印堆中永久代的類加載器的統計信息。包括了每個類加載器的名稱、存活狀態、地址、父加載器以及所加載的類的數量與大小
如:
[webjoin@dd webjoin]$ jmap -permstat 7121
Attaching to process ID 7121, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 11.0-b11
15066 intern Strings occupying 1255240 bytes.
finding class loader instances ..Unknown oop at 0x8b797d80
Oop's klass is null
Finding object size using Printezis bits and skipping over...
done.
computing per loader stat ..done.
please wait.. computing liveness...........................................................................................done.
class_loader classes bytes parent_loader alive? type

<bootstrap> 1073 2716752 null live <internal>
0x8bcc75e0 1 1456 0x8bc33f10 dead sun/reflect/DelegatingClassLoader@0x93f33140
0x8bf368c0 1 904 0x8bc33f10 dead sun/reflect/DelegatingClassLoader@0x93f33140
0x8bd36610 0 0 0x8bc20dd8 live java/util/ResourceBundle$RBClassLoader@0x9401ab90
0x8bc354c8 167 498120 0x8bc20dd8 live org/apache/catalina/loader/StandardClassLoader@0x8f75e1d8
0x8bf98a08 1 1456 0x8bc33f10 dead sun/reflect/DelegatingClassLoader@0x93f33140
……
total = 63 2042 5712456 N/A alive=16, dead=47 N/A
-F:強制。當使用dump或者histo參數進程不響應時使用。此模式下,-live參數不能使用
-h、-help:打印幫助信息
-J<flag> :將flag作爲參數傳遞給jmap運行的虛擬機
如:
-J-64就是將-64傳遞給運行jmap的虛擬機,表示以64位模式運行jmap
Jhat
命令:
jhat [ options ] <heap-dump-file>
功能說明:
jhat命令分析一個java堆內存的dump文件,並同時啓動一個WEB服務器,可以通過瀏覽器察看文件所保存的堆的信息。Jhat還支持一種類似於SQL的OQL語言件所堆的dump。OQL的幫助在jhat中內置,可以在運行jhat後通過http://localhost:7000/oqlhelp/來獲得。
要想獲得dump文件,可以通過如下幾種方式:
 使用jmap -dump 獲得運行期間的堆的dump文件
 使用jconsole通過HotSpotDiagnosticMXBean獲得運行期間的堆的dump文件
 虛擬機通過-XX:+HeapDumpOnOutOfMemoryError 參數啓動,在發生OutOfMemoryError時會自動生成dump文件
 使用hprof.
參數說明:
-stack false/true:關閉對對象分配的調用關係棧的追蹤。如果在dump文件中沒有分配信息,就需要將此參數設置爲false。默認爲true.
-refs false/true:關閉對對象引用關係的追蹤。默認爲true。就是說默認情況下會對堆中所有對象分析對其引用的對象。
-port 端口號:設置jhat啓動的WWW服務器的服務端口號
-exclude 文件名稱:通過文件配置在可達對象查詢時不用包括的數據的列表。比如文件中包括了java.lang.String.value,在任何時候分析對於從某一對象可達的對象列表的時候,都不會考慮java.lang.String.value域
-baseline 文件名稱:指定用於比較的堆的dump文件。在兩個堆中均存在的對象ID將不會被標識爲new,其它的對象將會被表示爲new。這在比較兩個不同的堆dump文件時會很有用。
-debug int:設置debug級別,0表示沒有調試輸出,對於更多的交互模式可以設置更高的值
-version:打印版本信息
-h、-help:打印幫助信息
-J<flag> :將flag作爲參數傳遞給jmap運行的虛擬機
如:
-J-64就是將-64傳遞給運行jhat的虛擬機,表示以64位模式運行

jps
命令:
jps [ options ] [ hostid ]
功能說明:
類似於ls,jps是用於專門顯示JVM進程的。jps受權限限制,只能獲得其具有訪問權限的JVM進程。
在不指定hostid的情況下運行jps,將在本地服務器上查詢JVM進程。如果指定了hostid,將會去查詢指定的服務器上查詢JVM進程,追蹤查詢是通過特定的端口和協議實現的,在目標服務器需要有jstatd在運行。
參數說明:
-q:只顯示進程號,不顯示其它任何信息
-m:打印出傳遞給main方法的參數,對於內嵌的虛擬機,此項可能爲null
-l:打印出應用的main class的完整包名或者應用程序的jar文件的完整路徑名
-v:打印出傳遞給JVM的參數
-V:打印通過flags文件(.hotspotrc 文件或者通過參數指定 -XX:Flags=<filename> argument)傳遞給虛擬機的參數() -XX:Flags=<filename> argument).
-J<flag> :將flag作爲參數傳遞給jmap運行的虛擬機
如:
-J-64就是將-64傳遞給運行jhat的虛擬機,表示以64位模式運行
hprof
命令:
java -agentlib:hprof[=options] ToBeProfiledClass
java -Xrunhprof[:options] ToBeProfiledClass
功能說明:
hprof是java自帶的用於性能監控的工具,可以對堆內內存和CPU的使用進行監控和記錄。hprof實際上是一個JVM的本地代理庫,在JVM啓動時通過命令行參數動態加載,成爲JVM進程的一部分。通過hprof,用戶可以得到關於堆和內存的不同的性能特徵。Hprof可以一文本或者二進制格式保存文件,可以用於跟蹤和隔離引起包括內存的使用是執行效率較低的性能問題的代碼。Hprof生成的二進制文件可以通過一些工具,如jhat,瀏覽堆中的對象創建情況。
J2SE1.5之後,hprof是通過Java Virtual Machine Tool Interface(JMTI)技術實現的。
參數說明:
help:顯示幫助信息
java -agentlib:hprof=help
Option Name and Value Description Default
--------------------- ----------- -------
heap=dump|sites|all heap profiling all
cpu=samples|times|old CPU usage off
monitor=y|n monitor contention n
format=a|b text(txt) or binary output a
file=<file> write data to file java.hprof[{.txt}]
net=<host>:<port> send data over a socket off
depth=<size> stack trace depth 4
interval=<ms> sample interval in ms 10
cutoff=<value> output cutoff point 0.0001
lineno=y|n line number in traces? y
thread=y|n thread in traces? n
doe=y|n dump on exit? y
msa=y|n Solaris micro state accounting n
force=y|n force output to <file> y
verbose=y|n print messages about dumps y

Obsolete Options
----------------
gc_okay=y|n

Examples
--------
- Get sample cpu information every 20 millisec, with a stack depth of 3:
java -agentlib:hprof=cpu=samples,interval=20,depth=3 classname
- Get heap usage information based on the allocation sites:
java -agentlib:hprof=heap=sites classname

Notes
-----
- The option format=b cannot be used with monitor=y.
- The option format=b cannot be used with cpu=old|times.
- Use of the -Xrunhprof interface can still be used, e.g.
java -Xrunhprof:[help]|[<option>=<value>, ...]
will behave exactly the same as:
java -agentlib:hprof=[help]|[<option>=<value>, ...]

Warnings
--------
- This is demonstration code for the JVMTI interface and use of BCI,
it is not an official product or formal part of the JDK.
- The -Xrunhprof interface will be removed in a future release.
- The option format=b is considered experimental, this format may change
in a future release.
file:性能監控數據保存的文件名稱。默認爲java.hprof.txt。一般情況下輸出信息會包括路徑、線程和對象的ID。每一類型的ID會採用與其他類型ID不同的數字作爲開頭。比如說,路徑的ID一般以300000作爲開始。
force:默認情況下(force=y),輸出信息是將會將文件原有的內容清除。因此,如果需要多虛擬機同時通過hprof性能監控,就應當使用force=n,這樣將會根據需要把一些附加的字符串附加在文件名的最後。
interval:本參數只在cpu=samples時生效,用於控制取樣線程在對線程堆棧的採樣之間的休眠時間。
msa:只在Solaris操作系統有效,引發使用Solaris的Solaris Micro State Accounting
depth:hprof記錄的追蹤棧的最大深度。默認爲4
thread:設置此參數爲y,將使得hprof紀錄追蹤棧時區分線程
heap:設置此參數爲site,hpof將包括如下形式的內容。此部分按照對象名稱以及創建對象的trace stack(在記錄文件中可以根據trace的對應值找到)顯示堆中內存的分配情況。
Command used: javac -J-agentlib:hprof=heap=sites Hello.javaSITES BEGIN (ordered by live bytes) Fri Oct 22 11:52:24 2004
percent live alloc'ed stack class
rank self accum bytes objs bytes objs trace name
1 44.73% 44.73% 1161280 14516 1161280 14516 302032 java.util.zip.ZipEntry
2 8.95% 53.67% 232256 14516 232256 14516 302033 com.sun.tools.javac.util.List
3 5.06% 58.74% 131504 2 131504 2 301029 com.sun.tools.javac.util.Name[] 4 5.05% 63.79% 131088 1 131088 1 301030 byte[]
5 5.05% 68.84% 131072 1 131072 1 301710 byte[]
設置heap爲dump,hprof將記錄堆中對象的完整信息,生成的文件很大,不過可以使用任何的文本編輯器察看,但是建議採用jhat來查看,這樣將會更爲方便。採用這種方式除了以上heap=site的內容將會記錄外,每個對象與其它對象的創建和引用關係的一些細節也會進行記錄。
cpu:設置爲samples,hprof通過取樣線程獲得CPU數據。如:
Command used: javac -J-agentlib:hprof=cpu=samples Hello.java
CPU SAMPLES BEGIN (total = 126) Fri Oct 22 12:12:14 2004
rank self accum count trace method
1 53.17% 53.17% 67 300027 java.util.zip.ZipFile.getEntry
2 17.46% 70.63% 22 300135 java.util.zip.ZipFile.getNextEntry
3 5.56% 76.19% 7 300111 java.lang.ClassLoader.defineClass2
4 3.97% 80.16% 5 300140 java.io.UnixFileSystem.list
5 2.38% 82.54% 3 300149 java.lang.Shutdown.halt0
6 1.59% 84.13% 2 300136 java.util.zip.ZipEntry.initFields
7 1.59% 85.71% 2 300138 java.lang.String.substring
8 1.59% 87.30% 2 300026 java.util.zip.ZipFile.open
9 0.79% 88.10% 1 300118 com.sun.tools.javac.code.Type$ErrorType.<init>
10 0.79% 88.89% 1 300134 java.util.zip.ZipFile.ensureOpen
hprof定期對所有的運行中的線程堆棧取樣,以記錄其中最活躍的stack trace。其中的count域是指一個特定的棧被發現活躍的次數,而不是該方法被調用的次數。這些stack trace負荷了應用程序中CPU使用的熱點。此參數不需要對所加載的類進行修改,對被監控的應用程序的運行性能也只有很小的影響。
設置爲times,hprof通過在每個方法的入口和出口植入代碼的方式獲得CPU的使用信息,保持對每個方的的調用次數和花費時間的精確跟蹤。由於使用了代碼注入,與cpu=samples相比程序運行速度會降低。輸出信息如下:
Command used: javac -J-agentlib:hprof=cpu=times Hello.java
CPU TIME (ms) BEGIN (total = 103099259) Fri Oct 22 12:21:23 2004
rank self accum count trace method
1 5.28% 5.28% 1 308128 com.sun.tools.javac.Main.compile
2 5.16% 10.43% 1 308127 com.sun.tools.javac.main.Main.compile
3 5.15% 15.58% 1 308126 com.sun.tools.javac.main.Main.compile
4 4.07% 19.66% 1 308060 com.sun.tools.javac.main.JavaCompiler.compile
5 3.90% 23.56% 1 306652 com.sun.tools.javac.comp.Enter.main
6 3.90% 27.46% 1 306651 com.sun.tools.javac.comp.Enter.complete
7 3.74% 31.21% 4 305626 com.sun.tools.javac.jvm.ClassReader.listAll
8 3.74% 34.95% 18 305625 com.sun.tools.javac.jvm.ClassReader.list
這裏的count顯示了方法的實際被調用次數,百分數表示花費在這些方法上的線程時間的百分比。
hprof可以生成二進制文件並使用jhat工具瀏覽。
jstack
命令:
jstack [ option ] pid
jstack [ option ] executable core
jstack [ option ] [server-id@]remote-hostname-or-IP
功能說明:
jstack打印出指定JVM內的所有線程的堆棧追蹤信息,虛擬機信息可以是本地的進程、CORE文件或者是遠端的調試服務器。

參數說明:
直接運行:
打印內容類似如下:
[webjoin@dd bin]$ jstack 7121
2008-06-12 10:19:08
Full thread dump Java HotSpot(TM) Client VM (11.0-b11 mixed mode, sharing):

"Attach Listener" daemon prio=10 tid=0x083ed400 nid=0x1c35 waiting on condition [0x00000000..0xb40c4648]
java.lang.Thread.State: RUNNABLE

"TP-Monitor" daemon prio=10 tid=0x08178800 nid=0x1c03 in Object.wait() [0xb4115000..0xb4115480]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x8bf7a220> (a org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable)
at org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable.run(ThreadPool.java:564)
- locked <0x8bf7a220> (a org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable)
at java.lang.Thread.run(Thread.java:619)

"TP-Processor4" daemon prio=10 tid=0x08177400 nid=0x1c02 runnable [0xb4166000..0xb4166600]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
- locked <0x8bf7a2c8> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(ServerSocket.java:453)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:312)
at org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:666)
at org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:876)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)
如程序中發生死鎖,則在最後會打印出如下信息:
"Thread-1":
at com.ebupt.test.thread.DeadLockThread.run(DeadLock.java:44)
- waiting to lock <0x8b747f98> (a java.lang.Object)
- locked <0x8b747fa0> (a java.lang.Object)
"Thread-0":
at com.ebupt.test.thread.DeadLockThread.run(DeadLock.java:44)
- waiting to lock <0x8b747fa0> (a java.lang.Object)
- locked <0x8b747f98> (a java.lang.Object)

Found 1 deadlock.
信息中包括類的全名、方法名、字節代碼索引(BCI)以及行號。
-F 通過增加此參數強制對未響應的JVM執行操作,獲得棧追蹤的信息
-l 長列表。輸出更多的關於鎖(如實現了同步訪問的列表)的附加的信息
-m 打印混合模式(包括java和本地的c/c++)的棧追蹤信息
-h 打印幫助信息.
-help 打印幫助信息
jsdebugd
命令:
jsadebugd pid [ server-id ]
jsadebugd executable core [ server-id ]
功能說明:
jsadebugd依附到一個Java進程或CORE文件並且擔當一個調試服務器的作用。遠程客戶,例如jstack、jmap和jinfo,都能夠通過Java RMI依附到該服務器。在啓動jsadebugd前,需要先執行rmiregistry -J-Xbootclasspath/p:$JAVA_HOME/lib/sajdi.jar啓動遠程對象註冊表。如果沒有啓動遠程對象註冊表,jsadebugd將在標準的1099端口啓動遠程對象註冊表。
參數說明:
pid 調試服務器需要依附的進程號。該進程號必須是一個java進程。
executable 生成core文件的可執行的java程序。
core 調試服務器需要依附的CORE文件。
server-id 唯一的服務器標識,當同一臺服務器上啓用多個調試服務器時作爲調試服務器的標識。遠端客戶端通過該ID連上特定的調試服務器。
jinfo
命令:
jinfo [ option ] pid
jinfo [ option ] executable core
jinfo [ option ] [server-id@]remote-hostname-or-IP
功能說明:
jsadebugd依附到一個Java進程或CORE文件並且擔當一個調試服務器的作用。遠程客戶,例如jstack、jmap和jinfo,都能夠通過Java RMI依附到該服務器。在啓動jsadebugd前,需要先執行rmiregistry -J-Xbootclasspath/p:$JAVA_HOME/lib/sajdi.jar啓動遠程對象註冊表。如果沒有啓動遠程對象註冊表,jsadebugd將在標準的1099端口啓動遠程對象註冊表。
參數說明:
<no option> 打印命令行參數以及系統屬性的名稱和值
-flag name
打印指定命令行標誌的名稱和值
-flag [+|-]name
允許或禁止指定的命令行標誌
-flag name=value
設置指定的命令行標誌爲指定的值
-flags
打印傳遞給JVM的命令行標誌的名稱和值
-sysprops
打印JAVA系統屬性信息的名稱與值.
-h 打印幫助信息
-help打印幫助信息

jstat
命令:
jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]
功能說明:
jstat工具用於顯示虛擬機的性能統計信息。
參數說明:
generalOption 命令行選項,具體說明見後面
-help 顯示幫助信息
-version 顯示版本信息
-options 顯示統計選項清單
outputOptions 一個或多個輸出選項,確認jstat要顯示的統計信息
class 類加載器的行爲統計
compiler HotSpot的JIT(Just-In-Time)的行爲統計
gc 堆垃圾收集的行爲統計
gccapacity 各代以及其相應的空間的能力統計
gccause 最近一次以及當前的垃圾收集事件的垃圾收集統計概要信息
gcnew Young區的行爲統計
gcnewcapacity Young區以及其對應空間的大小的統計
gcold Old以及Permnent區的行爲統計信息
gcoldcapacity Old區大小的統計信息
gcpermcapacity Permanent區大小的統計信息
gcutil 垃圾收集的概要信息
printcompilation HotSpot編譯方法統計信息
vmid 用於指定目標虛擬機的字符串。本地的可以直接寫虛擬機進程號;遠端的一般形同[protocol:][//]lvmid[@hostname[:port]/servername],要想通過jstat獲得遠端虛擬機統計信息,需要在遠端啓動jstatd服務器
protocol:指定了通訊協議。過protocol和hostname都沒指定,默認的就是經過優化的本地通訊協議;如果沒有指定protocol而指定了hostname,則默認採用RMI協議
lvmid:虛擬機的本地進程號
hostname:服務器名稱或地址
port:與遠端服務器通訊端口號,如指定protocol爲RMI,端口號默認爲1099
servername:當使用協議爲RMI時,表示在遠端服務器上的RMI遠端對象名稱
輸出說明:
-class option
Class Loader Statistics
Loaded 加載的類的數量
Bytes 加載的KB數
Unloaded 寫在的類的數量
Bytes 卸載的KB數
Time 在類的加載和卸載上花費的時間開銷
-compiler Option
HotSpot Just-In-Time Compiler Statistics
Compiled 完成的編譯任務個數
Failed 失敗的編譯任務個數
Invalid 非法的編譯任務個數
Time 完成編譯任務的花費時間
FailedType 最後一次編譯失敗的編譯類型
FailedMethod 最後一次編譯失敗的類和方法名稱
-gc Option
Garbage-collected heap statistics
S0C 當前0號Survivor的大小,單位爲KB
S1C 當前1號Survivor的大小,單位爲KB
S0U 0號Survivor空間的使用情況,單位爲KB
S1U 1號Survivor空間的使用情況,單位爲KB
EC 當前的Eden區的空間大小,單位爲KB
EU Eden的空間的使用情況,,單位爲KB
OC 當前的Old區的空間大小,單位爲KB
OU Old的空間的使用情況,,單位爲KB
PC 當前的Permanent區的空間大小,單位爲KB.
PU Permanent的空間的使用情況,,單位爲KB
YGC Young區的GC事件次數
YGCT Young 區的GC時間
FGC FullGC 發生次數
FGCT FullGC時間
GCT 垃圾收集總時間
-gccapacity Option
Memory Pool Generation and Space Capacities
NGCMN Young區最小大小,單位爲KB
NGCMX Young區最大大小,單位爲KB
NGC Young區當前大小,單位爲KB
S0C 0號Survivor區當前大小,單位爲KB
S1C 1號Survivor區當前大小,單位爲KB
EC Eden區當前大小,單位爲KB
OGCMN Old區最小大小,單位爲KB
OGCMX Old區最大大小,單位爲KB
OGC Current old generation capacity (KB).
OC Current old space capacity (KB).
PGCMN Permanent區最小大小,單位爲KB
PGCMX Permanent區最大大小,單位爲KB
PGC Current Permanent generation capacity (KB).
PC Current Permanent space capacity (KB).
YGC Young區GC總數Number of Young generation GC Events.
FGC FullGC總數
-gccause Option
除了包含了最後一次以及當前的垃圾收集事件的願因,此選項顯示的概要信息與-gcutil相同。相比-gcutil,此選項的輸出增加了如下列:
LGCC 引發最後一次垃圾收集的原因.
GCC 引發當前垃圾收集的原因
-gcnew Option
New Generation Statistics
S0C 0號Survivor區當前大小,單位爲KB
S1C 1號Survivor區當前大小,單位爲KB
S0U 0號Survivor空間的使用情況,單位爲KB
S1U 1號Survivor空間的使用情況,單位爲KB
TT 持有次數限制
MTT 最大持有次數限制
DSS Desired survivor size (KB).
EC 當前的Eden區的空間大小,單位爲KB
EU Eden的空間的使用情況,,單位爲KB
YGC Young區的GC事件次數
YGCT Young 區的GC時間

-gcnewcapacity Option
New Generation Space Size Statistics
NGCMN Young區最小大小,單位爲KB
NGCMX Young區最大大小,單位爲KB
NGC Young區當前大小,單位爲KB
S0CMX 0號Survivor的最大大小,單位爲KB
S0C 當前0號Survivor的大小,單位爲KB
S1CMX 1號Survivor的最大大小,單位爲KB
S1C 當前1號Survivor的大小,單位爲KB
ECMX Eden區最大大小,單位爲KB
EC 當前的Eden區的空間大小,單位爲KB
YGC Young區GC總數
FGC FullGC總數

-gcold Option
Old and Permanent Generation Statistics
PC 當前Permanent的容量,單位爲KB
PU Permanent的已用大小,單位爲KB
OC 當前Old的容量,單位爲KB
OU Old的已用大小,,單位爲KB
YGC Young區GC總數
FGC FullGC總數
FGCT FullGC總時間
GCT GC總時間

-gcoldcapacity Option
Old Generation Statistics
OGCMN Old最小容量,單位爲KB
OGCMX Old最大容量,單位爲KB
OGC Current old generation capacity (KB).
OC Current old space capacity (KB).
YGC Young區GC總數
FGC FullGC總數
FGCT FullGC總時間
GCT GC總時間

-gcpermcapacity Option
Permanent Generation Statistics
PGCMN Permanent區最小大小,單位爲KB
PGCMX Permanent區最大大小,單位爲KB
PGC Current permanent generation capacity (KB).
PC Current permanent space capacity (KB).
YGC Young區GC總數
FGC FullGC總數
FGCT FullGC總時間
GCT GC總時間

-gcutil Option
Summary of Garbage Collection Statistics
S0 0號Survivor空間當前使用百分比(已使用/當前容量)
S1 1號Survivor空間當前使用百分比(已使用/當前容量)
E Eden空間當前使用百分比(已使用/當前容量)
O Old空間當前使用百分比(已使用/當前容量)
P Permanent空間當前使用百分比(已使用/當前容量)
YGC Young區GC總數
YGCT Young區GC總時間
FGC FullGC總數
FGCT FullGC總時間
GCT GC總時間

-printcompilation Option
HotSpot Compiler Method Statistics
Compiled 完成得編譯任務的個數
Size 方法的字節數
Type 編譯類型
Method 標示被編譯方法的類名與方法名。類名中使用“/”而不是“.”作爲命名空間分隔符。方法名稱是在該類中的方法。這兩個部分的格式與HotSpot中 - XX:+PrintComplation 的選項一致。
jstatd
命令:
jstatd [ options ]
功能說明:
jstatd是一個虛擬機的監控工具,對遠端監控工具提供了連接上本地虛擬機並對其進行監控的接口。
參數說明:
Options
-nr 沒有找到RMI註冊表時也不要創建jstatd進程內置的RMI註冊表
-p port 查找RMI註冊表的端口號,如果沒指定-nr選項且在端口沒有找到RMI註冊表,就自行創建一個
-n rminame 綁定在RMI註冊表的遠端RMI對象名稱。默認名爲JStatRemoteHost。如果在同一臺主機上同時啓動了多個jstatd服務器,可以通過此選項爲各個服務器指定不同的名稱。採用此方式後,客戶端在連接服務器時提供的hostid和vmid中需要包含此指定的服務器名稱。
-Joption 類似jmap等工具的-J的參數,可以傳遞參數給虛擬機

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章