作業8:常用java命令(二)
阿新 • • 發佈:2018-07-28
col ota rop 例子 error oracle code ref 信息
一、jinfo(Configuration Info for Java)
1、功能:jinfo可以實時地查看和調整虛擬機的各項參數。
2、參數:
選項 | 作用 |
---|---|
-flag name | 打印改名字的VM設置 |
-flag +|- name | 是否打印某個VM設置 |
-flag name=value | 設置某個VM設置為某個值 |
-sysprops | 打印系統中所有Java設置 |
-flags | 打印所有VM設置 |
打印所有的VM和系統的Java設置 |
3、例子
$ jinfo -flags 8472 VM Flags: -XX:CICompilerCount=4 -XX:ConcGCThreads=2 -XX:G1ConcRefinementThreads=8 -XX:G1HeapRegionSize=1048576 -XX:InitialHeapSize=268435456 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=734003200 -XX:MaxNewSize=440401920 -XX:MinHeapDeltaBytes=1048576 -XX:NonNMethodCodeHeapSize=5835340 -XX:NonProfiledCodeHeapSize=122911450 -XX:ProfiledCodeHeapSize=122911450 -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseG1GC -XX:-UseLargePagesIndividualAllocation # 截取片斷 $ jinfo -sysprops 8472 Java System Properties: #Sat Jul 28 15:29:42 CST 2018 sun.desktop=windows awt.toolkit=sun.awt.windows.WToolkit java.specification.version=10 file.encoding.pkg=sun.io sun.cpu.isalist=amd64 sun.jnu.encoding=GBK java.class.path=D\:/software/IntelliJ IDEA 2018.1.1/lib/jps-launcher.jar;E\:/develop/software/java10/jdk/lib/tools.jar;D\:/software/IntelliJ IDEA 2018.1.1/lib/optimizedFileManager.jar java.vm.vendor="Oracle Corporation" jdt.compiler.useSingleThread=true sun.arch.data.model=64 kotlin.incremental.compilation=true user.variant= kotlin.daemon.client.alive.path="C\:\\Users\\HBKJ\\AppData\\Local\\Temp\\kotlin-idea-4911978126183262642-is-running" java.vendor.url=http\://java.oracle.com/
二、jstat(JVM Statistics Monitoring Tool)
1、功能:jstat用於監視JVM各種運行狀態信息的命令行工具。可以顯示本地或遠程JVM進程中的類裝載、內存、垃圾收集、JIT編譯等運行數據。
2、參數:
選項 | 作用 |
---|---|
-class | 監視類加載、卸載數量、總空間以及類狀態所耗費的時間 |
-gc | 監視Java Heap狀態,包含Eden、S0、S1、Old、MetaSpace等容量、已用空間、GC耗費時間合計等信息 |
-gcutil | 與gc類似,關註已使用空間占總空間的占比 |
-gccause | 與gcutil類似,額外輸出導致上次GC的原因 |
-gcnew | 監視新生代GC的狀況 |
-gcold | 監視老年代GC的狀況 |
-gccapacity | 與gc類似,關註Java堆各個區域使用到的最大和最小空間 |
-gcnewcapacity | 與gcnew類似,關註新生代使用到的最大和最小空間 |
-gcoldcapacity | 與gcold類似,關註老年代使用到的最大和最小空間 |
-gcmetacapacity | 與gc類似,關註MetaSpace使用到的最大和最小空間 |
-compiler | 輸出JIT編譯器編譯過的方法、耗時等信息 |
-printcompilation | 輸出已經被JIT編譯的方法 |
3、例子
$ jstat -gcnew 8472 1000 3 S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT 0.0 2048.0 0.0 2048.0 15 15 3584.0 97280.0 9216.0 3 0.009 0.0 2048.0 0.0 2048.0 15 15 3584.0 97280.0 9216.0 3 0.009 0.0 2048.0 0.0 2048.0 15 15 3584.0 97280.0 9216.0 3 0.009 $ jstat -gcnewcapacity 8472 1000 1 NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC 0.0 716800.0 99328.0 0.0 0.0 716800.0 2048.0 716800.0 97280.0 3 0 $ jstat -gccause 8472 1000 1 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC GCC 0.00 100.00 9.47 17.63 97.47 92.84 3 0.009 0 0.000 0.009 Metadata GC Threshold No GC $ jstat -gcutil 8472 1000 1 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 100.00 9.47 17.63 97.47 92.84 3 0.009 0 0.000 0.009 $ jstat -class 8472 1000 1 Loaded Bytes Unloaded Bytes Time 3622 7032.7 0 0.0 1.22 3622 7032.7 0 0.0 1.22 $ jstat -compiler 8472 1000 1 Compiled Failed Invalid Time FailedType FailedMethod 1640 1 0 1.63 1 java/util/concurrent/ConcurrentHashMap putVal $ jstat -printcompilation 8472 1000 1 Compiled Size Type Method 1640 49 1 io/netty/util/internal/shaded/org/jctools/queues/atomic/BaseLinkedAtomicQueue isEmpty
三、jmap(Memory Map for Java)
1、功能:jmap用於生成堆轉儲快照(headdump或dump文件)。
2、生成dump文件的方法
- jmap
- -XX:HeapDumpOnOutOfMemoryError,JVM發生OOM異常自動生成
- -XX:HeapDumpOnCtrlBreak參數,運行期間 Ctrl+Break 生成
- Linux系統下通過kill -3 生成
3、選項
選項 | 作用 |
---|---|
-clstats | 打印類加載器的狀態 |
-finalizerinfo | 打印在F-Queue等待Finalizer線程執行finalize方法的對象 |
-histo[:live] | 打印堆中對象統計信息,如類、實例數量和合計容量 |
-dump | 顯示堆詳細信息,如使用哪種回收器、參數配置、分代狀況等 |
額外:live | 只輸出存活對象 |
額外:format=b | 二進制格式(文件小) |
額外:file=filename | 輸出文件 |
4、例子
# 截取片斷
$ jmap -clstats 8472
Index Super InstBytes KlassBytes annotations CpAll MethodCount Bytecodes MethodAll ROAll RWAll Total ClassName
1 -1 24694880 472 0 0 0 0 0 24 584 608 [B
2 -1 1305288 472 0 0 0 0 0 24 584 608 [I
3 11 461040 640 0 21624 132 5437 47840 23488 48432 71920 java.lang.Class
4 11 405576 584 128 13056 103 4108 51560 17416 49168 66584 java.lang.String
5 -1 372136 472 0 0 0 0 0 24 584 608 [Ljava.lang.Object;
6 11 343424 560 0 1352 9 213 2760 1488 3520 5008 java.util.concurrent.ConcurrentHashMap$Node
7 -1 150464 472 0 0 0 0 0 24 584 608 [C
8 11 148000 552 0 1376 7 149 1856 1152 2952 4104 java.util.HashMap$Node
9 2532 135280 528 0 688 3 56 1848 472 2776 3248 java.lang.ref.SoftReference
10 -1 101840 472 0 0 0 0 0 32 584 616 [Ljava.util.concurrent.ConcurrentHashMap$Node;
11 -1 91200 488 0 1272 14 109 3408 1528 3872 5400 java.lang.Object
12 9 69840 544 0 520 2 17 792 336 1704 2040 sun.util.locale.LocaleObjectCache$CacheEntry
13 -1 66272 472 0 0 0 0 0 32 584 616 [Ljava.util.HashMap$Node;
$ jmap -finalizerinfo 8472
No instances waiting for finalization found
# 截取片斷
$ jmap -histo 8472
num #instances #bytes class name (module)
-------------------------------------------------------
1: 18142 24747712 [B ([email protected])
2: 1378 2076168 [I ([email protected])
3: 3874 463096 java.lang.Class ([email protected])
4: 17191 412584 java.lang.String ([email protected])
5: 3616 376776 [Ljava.lang.Object; ([email protected])
6: 10755 344160 java.util.concurrent.ConcurrentHashMap$Node ([email protected])
7: 183 152336 [C ([email protected])
8: 4625 148000 java.util.HashMap$Node ([email protected])
# 生成dump文件可以用jhat分析
# 借助其他網站的在線分析工具
# jvisualvm分析
# windbg分析等
$ jmap -dump:live,format=b,file=heap.bin 8472
Heap dump file created
四、jhat(JVM Heap Analysis Tool)
1、功能:分析jmap生成的堆轉儲快照。
2、例子
$ jhat heap.bin
通過瀏覽器查看即可
3、其他好用的堆轉儲快照分析工具
- IBM Memory Analyzer
- Eclipse Memory Analysis
- jvisualvm
作業8:常用java命令(二)