JDK本身是提供了一些監控工具,有一些是命令行,也有圖形界面。本次介紹命令行如何進行監控。
命令行是非常重要的,因為在我們生產環境基本上是沒有圖形界面的,完全是通過命令行。
主要內容:
- JVM的參數類型
- 運行時JVM參數查看
- jstat查看虛擬機統計信息
- jmap+MAT實戰內存溢出
- jstack實戰死循環與死鎖
JVM參數類型
那么都有哪些JVM參數類型呢?一共分為三大類
- 標准參數
- X參數
- XX參數
標准參數
1.-help
2.-server -client
3.-version -showversion
4.-cp -classpath
標准參數,在各個版本的JVM里面中,基本保持不變。相對比較穩定
例如:java -help
X參數
- 非標准參數
也就是說在各個版本的JVM中可能會變,但是變化的也比較小。
1.-Xint:解釋執行
2.-Xcomp:第一次使用就編譯成本地代碼
3.-Xmixed:混合模式,JVM自己來決定是否編譯成本地代碼
舉例:
但是我們這塊X參數平時用的並不多,用的更多而是后面這塊XX參數。
XX參數
這塊參數用的是非常多,相信許多同學在網上會經常看到XX參數來設置JVM。我們先來看下它都有什么特點。
特點:
- 非標准化參數化
- 相對不穩定
- 主要用於JVM調優和Debug
分類
主要分為兩大類
- Boolean類型
格式:-XX:[+-]
比如:
-XX:+UseConcMarkSweepGC
表示啟用了CMS垃圾收集器
-XX:+UseG1GC
表示啟用了G1垃圾收集器
- 非Boolean類型
格式:-XX:
比如:
-XX:MaxGCPauseMillis=500
表示GC最大的停頓時間是500ms。
-XX:GCTimeRatio=19
表示GCTimeRatio等於19。
小結
以上先簡單了解一下分為兩大類:Boolean 與 非Boolean類型。Boolean是帶有+-號,而非Boolean類型是key,value形式存在,中間用等號。
-Xmx -Xms
這兩個參數,相信許多小伙伴們都見過。這兩個參數分別是一個設置最大內存,一個設置最小內存。
- 不是X參數,而是XX參數
1.-Xms等價於-XX:InitialHeapSize
2.-Xmx等價於-XX:MaxHeapSize
3.-Xss等價於-XX:ThreadStackSize
InitialHeapSize
初始堆的大小。MaxHeapSize
最大的堆大小。ThreadStackSize
線程堆棧大小
可以先簡單查看下運行后的進程,最大的堆大小值。
查看一下線程的堆棧大小。
可以看到這塊的線程堆棧大小有1024k,默認情況不做修改的話,堆棧其中的一個線程就有1024k,這線程應該還是比較大的。我們在調優的時候還是會把這個值調小一些。
這次就先介紹到這里,下一章講介紹如何查看JVM運行時參數。
推薦
文末
文章收錄至
Github: https://github.com/CoderMerlin/coder-programming
Gitee: https://gitee.com/573059382/coder-programming
歡迎關注並star~