[JVM教程與調優] JVM都有哪些參數類型?


JVM都有哪些參數類型?

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
標准參數 java -help

X參數

  • 非標准參數

也就是說在各個版本的JVM中可能會變,但是變化的也比較小。

1.-Xint:解釋執行
2.-Xcomp:第一次使用就編譯成本地代碼
3.-Xmixed:混合模式,JVM自己來決定是否編譯成本地代碼

舉例:

默認混合模式

設置成解釋模式

設置成編譯模式

但是我們這塊X參數平時用的並不多,用的更多而是后面這塊XX參數。

XX參數

這塊參數用的是非常多,相信許多同學在網上會經常看到XX參數來設置JVM。我們先來看下它都有什么特點。
特點:

  • 非標准化參數化
  • 相對不穩定
  • 主要用於JVM調優和Debug

分類

主要分為兩大類

  • Boolean類型

格式:-XX:[+-] 表示啟用或者禁用name屬性。其中+號表示啟用該參數,-號表示禁用該參數。

比如:

-XX:+UseConcMarkSweepGC

表示啟用了CMS垃圾收集器

-XX:+UseG1GC

表示啟用了G1垃圾收集器

  • 非Boolean類型

格式:-XX: = 表示name屬性的值是value,主要是以key,value形式存在。

比如:

-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~

微信公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM