咱們接着上一章節[JVM教程與調優] JVM都有哪些參數類型?的內容繼續講解,這章咱們來介紹一下:如何查看JVM運行時參數。這一點十分重要,由於咱們在進行JVM參數調優的時候,咱們首先得知道目前系統運行的值是什麼,而後相應的根據相關參數進行調優。html
1.-XX:+PrintFlagsInitial(查看初始值) 2.-XX:+PrinFlagsFinal(查看最終值) 3.-XX:+UnlockExperimentalVMOptions(解鎖實驗參數) 4.-XX:+UnlockDiagnosticVMOptions(解鎖診斷參數) 5.-XX:+PrintCommandLineFlags(打印命令行參數)java
bool類型 屬性名:UseG1GC 值:false 所以能夠看出,並無使用G1GC。git
InitialHeapSize := 130023424 表示初始堆的值大小。github
注意: =表示默認值 :=被用戶或者JVM修改後的值tomcat
能夠看到有很是多的參數。有興趣的小夥伴能夠本身試試。微信
那麼剛纔咱們看到的參數是哪一個進程的呢? 答案是:經過執行java -XX:+PrinFlagsFinal -version
這個命令時的進程參數值。oracle
若是咱們要查看一個在運行時的JVM參數值,那麼如何查看呢?這就是咱們後面講到的jinfo,在此以前,咱們先來看一下·jps·。學習
jps
它就相似於Linux系統中的ps
,也是用來查看系統進程的。不過它是專門用來查看java的進程。接下來咱們來簡單演示一下jps
的使用spa
更多jps
的適用參數命令,能夠去這裏查看 命令行
那麼咱們如何去查看一個正在運行的JVM的參數值呢? 那麼用jinfo
就能夠了。
再例如,咱們如何查看tomcat的最大內存值是多少?那麼咱們首先得知道命令,而後找到對應的pid。
如圖,其中23789就是tomcat
的進程pid
,查看對內存大小命令:MaxHeapSize
。 能夠看到最大堆內存大小爲268435456
能夠看到咱們手動賦值的參數,也能夠看到默認有的參數值。
垃圾回收這塊很是有用,由於咱們可以很是清楚的看到內存結構裏面每一塊的大小是如何進行變化的。
options:-class,-compiler,-gc,-printcompilation
咱們來查看一下jstat文檔。
咱們來介紹一下幾個命令。
jstat -class 3176 1000 10
後面的1000表示每隔1000ms,10表示一共輸出10次
咱們來看一下文檔中是如何介紹-class命令。
分別表示什麼含義呢?
命令:-gc、-gcutil、-gccause、-gcnew、-gcold
輸入:jstat -gc 3176 1000 3
一樣,後面表示每隔1000ms,一共打印輸出3次
咱們一樣來看一下文檔中的-gc的命令
咱們來總結一下-gc輸出結果。
命令:-compiler、-printcompilation
咱們來演示一下JIT編譯。
這些都表示什麼含義呢?咱們來看一下咱們的文檔。
小夥伴能夠結合一下上方的演示圖案,來理解一下是什麼含義。
你們瞭解一下就能夠,實際工做中做用並非很大。
以上都是以JDK1.8進行介紹。這裏小夥伴們先簡單瞭解一下這一塊,後續再詳細介紹。小夥伴們能夠本身在電腦上嘗試一下使用命令,觀察一下打印結果。 關於JVM參數的命令,在文檔中還有更多的詳細介紹。感興趣的小夥伴,能夠自行去查看。 傳送門:docs.oracle.com/javase/8/do…
下一章,咱們未來學習一下JVM的內存結構以及內存溢出。感興趣的小夥伴,能夠關注一下~
文章收錄至 Github: github.com/CoderMerlin… Gitee: gitee.com/573059382/c… 歡迎關注並star~