JVM調優你居然不會看JConsole

1.什麼是JConsole?

Jconsole (Java Monitoring and Management Console),一種基於JMX的可視化監視、管理工具。

JConsole 是從java開始引入的一個java性能分析器,可以從命令行或在 GUI shell 中運行來監控jvm運行的情況

2.如何啓動?

兩種方式啓動:

  • 1.java 安裝目錄JDK目錄下/bin裏面 jconsole.exe 雙擊運行
    在這裏插入圖片描述
  • 2.打開cmd 直接運行: jconsole
    在這裏插入圖片描述
    然後會彈出一個可視化界面如下:
    在這裏插入圖片描述

3.介紹如何使用和查看參數

在這裏插入圖片描述
上圖是我本地啓動了一個springboot項目,來進行測試,如上圖MailApplication,選擇後點擊鏈接,點擊不安全鏈接,成功後進入如下頁面

在這裏插入圖片描述
在tab頁面可以看到一些相關的選項卡:
概覽 內存 線程 類 vm 概要 Mbean

3.1 概覽介紹

概覽裏有(可按照時間範圍):
堆內存: 已經使用情況 已經提交 最大情況
線程: 有活動 峯值 總計
類: 已經加載 已卸載 總計
cpu 佔用率

3.2 內存

在這裏插入圖片描述
內存的話要注意三個地方,如上圖
內存使用量

  • 非堆內存使用量:即爲內存使用情況
  • 內存池"PS Old Gen" : JVM的老年代
  • 內存池"PS Eden Space": JVM的年輕代,當一個對象new 出來後會在Eden Space ,直到GC到來,GC會逐一問清楚每個對象是否存在引用,進入Survivor Space(倖存區)沒有引用將被kill。
  • 內存池 “PS Survivor Space”:倖存區,倖存者區的對象可以活段時間,GC會定期(可以自定義)會對這些對象進行訪問,如果該對象的引用不存在了將被kill,如果每次訪問該對象都存在引用,將被轉移到老年代。(用於保存在eden space內存池中經過垃圾回收後沒有被回收的對象。)
  • 內存池"Metaspace" :元空間,大部分類元數據都在本地內存中分配。用於描述類元數據的“klasses”已經被移除。默認情況下,類元數據只受可用的本地內存限制(容量取決於是32位或是64位操作系統的可用虛擬內存大小)。
  • 內存池"Code Cache":代碼緩存區。HotSpot Java虛擬機包括一個用於編譯和保存本地代碼(native code)的內存。
  • 內存池"Compressed Class Space": 壓縮空間

執行GC:點擊可以執行GC操作
詳細信息:即爲每個選項的詳細參數

3.3 線程

在這裏插入圖片描述
如上圖所示: 左下角顯示所有的活動線程,(如果線程過多,可以在下面的過濾欄中輸入字符串過濾出你想要觀察的線程)。點擊某個顯示會顯示這個線程的名稱、狀態、阻塞和等待的次數、堆棧的信息.

3.4 類

在這裏插入圖片描述
**類如上圖包括:**已經加載當前類,已經加載類總數,已經卸載類總數

3.5 VM

在這裏插入圖片描述
VM 的話就不多解釋,上面已很詳細了,注意這裏可以查看當前選擇的垃圾收集器(有次面試被問到)
垃圾收集器:
名稱 = ‘PS MarkSweep’, 收集 = 4, 總花費時間 = 0.413 秒
垃圾收集器:
名稱 = ‘PS Scavenge’, 收集 = 11, 總花費時間 = 0.125 秒

3.6 Mbean

在這裏插入圖片描述
如上圖所示,“MBeans”選項卡以通用方式顯示有關在平臺MBean服務器中註冊的所有MBean的信息。MBeans選項卡允許您訪問整套平臺MXBean工具,包括在其他選項卡中不可見的工具。另外,您可以使用MBeans選項卡監視和管理應用程序的MBean。

左邊的樹顯示當前正在運行的所有MBean。當您在樹中選擇一個MBean,它的MBeanInfo和MBean描述都顯示在右側,和任何屬性,操作或通知出現在其下方的樹。

參考:https://www.cnblogs.com/silyvin/p/10246865.html
https://www.cnblogs.com/grey-wolf/p/9217497.html
https://blog.csdn.net/dshf_1/article/details/103422963?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-4

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章