一、插件安裝
jvisualvm是隨jdk一同發布的jvm診斷工具,通過插件可以擴展很多功能,插件擴展也是jvisualvm的精華所在。
打開該工具,通過菜單“工具”—>“插件”開發以下對話框:
在可用插件tab中選擇需要安裝的插件,本博文中需要用到兩個插件如上圖中的方框所示。
二、調整IDEA類加載速度
本部分的時間測量用到插件Visual GC。
IDEA在啟動時,由於加載很多的類,占用了較長的時間,其實在加載這些類時,還有很重要的一步就是驗證這些加載的類。平時我們都是在組內開發工程,可以認為這些加載的編譯代碼是可靠的,不需要在加載的視乎再進行字節碼驗證。我們可以通過參數
-Xverify:none禁止字節碼驗證,加快IDEA的啟動過程。
這個參數要加載IDEA的配置文件中,一般情況下,配置文件在個人目錄下:
修改后的配置文件如下:
-Xms512m -Xmx1500m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -XX:MaxJavaStackTraceDepth=-1 -agentlib:yjpagent64=probe_disable=*,disablealloc,disabletracing,onlylocal,disableexceptiontelemetry,delay=10000,sessionname=IntelliJIdea2017.2 -Xverify:none
這些參數也可在jvisualvm的
概述面板下看到:
通過添加參數
-Xverify:none配置后,類加載速度提高30s以上。可以通過
visual vm插件面板查看:
根據
visual vm中面板的顯示內容,我們還可以調整jvm堆的設置,盡情探索吧~
三:監控遠程的jvm
1.監控遠程的tomcat,就需要在遠程的tomcat進行JMX配置,方法如下:
2、JMX方式
JMX方式是我們監控應用服務器(JBoss)常用的方法,使用JMX監控的功能不支持Visual GC。
我們經常需要對我們的開發的軟件做各種測試, 軟件對系統資源的使用情況更是不可少, 目前有多個監控工具, 相比JProfiler對系統資源尤其是內存的消耗是非常龐大,JDK1.6開始自帶的VisualVM就是不錯的監控工具.
這個工具就在JAVA_HOME\bin\目錄下的jvisualvm.exe, 雙擊這個文件就能看到一個比較直觀的界面
這個工具就在JAVA_HOME\bin\目錄下的jvisualvm.exe, 雙擊這個文件就能看到一個比較直觀的界面
從左邊Applications樹中可以知道,不光可以監控本地JVM運行情況, 還可以監控遠程機器上的JVM運行情況.
本地監控:只要打開某個JAVA程序就會自動的加入到本地監控中.
因為本地監控無需配置, 所以這里主要介紹監控遠程JVM
要進行遠程監控, 本機的VisualVM就必須和遠程的JVM要進行通信, Visualvm目前支持兩種remote connection方式.
分別是jstatd和JMX方式: 這里我主要介紹的是通過JMX方式.
通過JMX連接遠程機器, 需要經過下面的配置:
1. 修改遠程機器JDK配置文件 (我這里遠程機器是linux).
a.進入JAVA_HOME\jre\lib\management\目錄
b.拷貝jmxremote.password.template這個文件到當前目錄, 並改名為jmxremote.password
c.打開jmxremote.password文件,去掉 # monitorRole QED 和 # controlRole R&D 這兩行前面的注釋符號
2. 修改遠程機器上需要被監控的程序的配置文件 (我這里是監控Tomcat容器內部署的應用).
a.進入TOMCAT_HOME\bin目錄
b.打開catalina.sh文件,加入如下信息:
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.0.237 -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
c.重啟Tomcat服務.
如果是java server,則在腳本中加入 -Dcom.sun.management.jmxremote.port=10004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.136.21 即可。
3. 客戶端VisualVM配置 (我客戶端用的是WinXP).
a.直接反鍵點擊Remote,選擇Add Remote Host...
b.在彈出的界面中輸入遠程機器的IP地址(192.168.0.237),這個IP地址會加入到Remote節點下.
c.反鍵點擊這個IP地址,選擇Add JMX Connection, 在彈出的界面中輸入剛配置的端口號(18999), 這個連接會加入到該IP節點下.
d.反鍵點擊這個連接,選擇Open.
此時就可以看到監控的界面, 從界面上我們可以看到CPU信息, 內存信息, 統計加載類數量,線程信息.
原文鏈接:https://blog.csdn.net/wzyzzu/article/details/50380511