<a href="#%E4%B8%80%E5%89%8D%E8%A8%80">一前言</a>
<a href="#%E4%BA%8C%E8%99%9A%E6%8B%9F%E6%9C%BA%E6%80%A7%E8%83%BD%E7%9B%91%E6%8E%A7">二虛拟機性能監控</a>
<a href="#21jps%E8%99%9A%E6%8B%9F%E6%9C%BA%E8%BF%9B%E7%A8%8B%E7%8A%B6%E5%86%B5%E5%B7%A5%E5%85%B7">1JPS虛拟機程序狀況工具</a>
<a href="#22jstat%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%BB%9F%E8%AE%A1%E4%BF%A1%E6%81%AF%E7%9B%91%E8%A7%86%E5%B7%A5%E5%85%B7">2jstat虛拟機統計資訊監視工具</a>
<a href="#23jinfojava%E9%85%8D%E7%BD%AE%E4%BF%A1%E6%81%AF%E5%B7%A5%E5%85%B7">3jinfoJava配置資訊工具</a>
<a href="#24jmapjava%E5%86%85%E5%AD%98%E6%98%A0%E5%83%8F%E5%B7%A5%E5%85%B7">4jmapJava記憶體映像工具</a>
<a href="#25jhat%E8%99%9A%E6%8B%9F%E6%9C%BA%E5%A0%86%E5%AD%98%E5%82%A8%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7">5jhat虛拟機堆存儲分析工具</a>
<a href="#26jstackjava%E5%A0%86%E6%A0%88%E8%B7%9F%E8%B8%AA%E5%B7%A5%E5%85%B7">6jstackJava堆棧跟蹤工具</a>
<a href="#27jdk%E5%8F%AF%E8%A7%86%E5%8C%96%E5%B7%A5%E5%85%B7">7JDK可視化工具</a>
<a href="#271jconsolejava%E7%9B%91%E8%A7%86%E4%B8%8E%E7%AE%A1%E7%90%86%E6%8E%A7%E5%88%B6%E5%8F%B0">71JConsoleJava監視與管理控制台</a>
<a href="#272-%E6%AD%BB%E9%94%81%E5%AE%9E%E4%BE%8B">72 死鎖執行個體</a>
除開java與javac,你還知道JDK的其他命名嗎?
虛拟機故障處理與調優一般怎麼處理?
JDK強大而且小巧的工具,可以幫助我們實作很多騷操作,如果線上伺服器你實在難以近身,還提供了tools.jar的類庫以備你在應用程式中實作強大監控功能,讓你騷起來。同時幫你解決一些虛拟機故障。

jps指令:jps [options] [hostid]
選項
作用
-q
隻輸出LIMID,省略主類的名稱
-m
輸出虛拟機程序啟動時候傳遞給main()函數的參數
-l
輸出主類的全名,如果程序執行的Jar包,輸出的Jar路徑
-v
輸出虛拟機程序啟動時候的參數
示例如下:
它顯示程序彙總的類加載、記憶體、垃圾收集、JIT等資料。
jstat指令格式:jstat [option vmid ] [interval [s|ms] [count]]
-class
監視類裝載、解除安裝數量、總空間以及類裝載所消耗的時間
-gc
監視Java堆狀況、包括Eden區、兩個Survivor區、老年代、永久帶等 容量等資訊
-gccapacity
監視資訊與gc相同,關注各個區域使用的最大、最小空間
-gcuti
監視資訊與gc相同,關注使用空間占總空間的百分比
-gcnew
監視新生代GC情況
-gcnewcapacity
與gcnew相同,關注使用最大、最小空間
-gcold
監視老年代GC情況
-gcoldcapacity
關注使用最大、最小空間
-gcpermcapatity
輸出永久代最大、最小空間
-compiler
輸出JIT編譯過的方法、耗時
-printcompilation
輸出已經被JIT編譯過的方法
執行個體如下
實時查詢虛拟機參數
jinfo指令格式:jinfo [options] pid
查詢finalize執行隊列、Java堆和永久代資訊,使用哪種收集器等。
-dump
生成存儲快照 格式:-dump [live,] format=b,file=,其中live說明是否隻是dump存活的對象
-finalizerinfo
線上F-Queue在縣城執行finalize方法對象
-heap
顯示使用回收器、參數配置,分代情況
-histo
顯示堆中統計資訊,包括類、執行個體數量、合計内容
-permstat
以ClassLoader為統計口徑顯示永久代狀态 1.8無
生成此時此刻的線程快照,為了定位線程長時間停頓原因、線程死鎖、死循環、請求外部資源等待導緻的長時間停頓的原因。
jstack命名格式:jstack [options] vmid
-F
當正常的請求不被響應時候,強制輸出線程堆棧
-I
顯示關于鎖的附加資訊
如果調用的是c,可以列印c/c++堆棧
實際用法:我們在調用線程的時候,有一個getAllstackTraces()方法,可以一樣輸出StackTraceElement對象。
結果:
結果