JVM調優過程中,常用JDK自帶的兩個工具JConsole和JVisualVM,有助於分析問題。下面是兩個工具的使用方式。(我發現好多小夥伴居然都不知道這麼強大的工具)
一、JConsole使用。
1、JConsole本地監控啓動
首先在JDK的bin目錄下,雙擊打開JConsole.exe程序 ,然後選擇你自己啓動的項目或者程序,雙擊即可打開監控界面。
2、JConsole查看當前程序/進程的全局情況
3、單獨查看內存使用情況和GC回收情況
4、查看程序中線程的情況
5、單獨查看程序中類的加載和卸載情況
6、查看VM的概要情況以及相關運行參數
7、JConsole遠程連接以及配置
二、JVisualVM工具使用
1、JVisualVM本地啓動(整體用法和JConsole差不多)
如何添加監控進程的jmxremote??
一般在\run\conf\wrapper.conf有一個屬性rapper.java.additional.5=-Dcom.sun.management.jmxremote.port
如:應用服務器:C:\PEIM\CoreService\run\conf\wrapper64.conf
2、JVisualVM查看整體的情況
3、查看程序的線程狀況
4、JVisualVM查看當前堆快照,並分析各類的實例所佔內存比
5、 JVisualVM 遠程連接
三、總結
1、小結
JConsole和 JVisualVM 都能很好的監控當前程序的運行狀況,兩者結合使用互補。 如果服務器上也加了這兩者的相關配置,那麼本地即可遠程連接查看項目的運行情況。
另外,對於JVM中GC何時對內存空間進行回收,這個有必要先了解Java 對象的生命週期 和 JVM的結構。 我提供兩個文案給大家學習。
2、Java對象的生命週期
參考:http://baijiahao.baidu.com/s?id=1605533655597190625&wfr=spider&for=pc
3、JVM的內存分佈結構分析
參考:https://www.cnblogs.com/SaraMoring/p/5713732.html