日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

jvisualvm (Java VisualVM)

發布時間:2023/12/10 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jvisualvm (Java VisualVM) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章來源:https://blog.csdn.net/a19881029/article/details/8432368

jvisualvm能干什么

監控內存泄露,跟蹤垃圾回收,執行時內存、cpu分析,線程分析…

?

jvisualvmg已經被集成在jdk1.6以上的版本中(不是jre)。自身運行需要最低jdk1.6版本,但是可以監控運行在jdk1.4以上版本的java程序

以jdk1.6update45(jdk1.6update45自帶的jvisualvm)來做說明,當然也可單獨下載獨立的jvisualvm,正常安裝完jdk后,至jdk的bin目錄下,運行jvisualvm.exe即可

網上有人說jvisualvm對ntfs的硬盤格式支持的不好(都說不好,也沒說到底哪里不好),反正我用著是挺正常的,不管怎么樣先把解決方式記下來吧

創建jvisualvm.exe的快捷方式,右鍵快捷方式選擇屬性,在“目標”欄中追加"-XX:+PerfBypassFileSystemCheck"

程序運行后會自動監控本機運行的java程序(Local標簽下,遠程服務器上的java程序需要另行配置),如果是下載的jvisualvm,解壓后,運行bin目錄下的jvisualvm.exe即可

?

Local標簽下的第一個VisualVM為jvisualvm對自身的監控,可以看到消耗的資源還是很少的,第二個為本機的eclipse

監控項總共分為Overview,Monitor,Threads和一個Sampler。

1.Overview(jvm啟動參數,系統參數)

可以看到eclipse的啟動參數

(通過這些啟動參數,可以判斷程序是否有內存溢出)

?

2.Monitor

左上:cpu利用率,gc狀態的監控

右上:堆利用率,永久內存區的利用率

左下:類的監控

右下:線程的監控

performGC:gc的詳細運行狀態

HeapDump:堆的詳細狀態(可以看到堆的概況,里面所有的類,還能點進具體的一個類查看這個類的狀態)

?

3.Threads

能夠顯示線程的名稱和運行的狀態,在調試多線程時必不可少,而且可以點進一個線程查看這個線程的詳細運行情況

?

監控服務器上的tomcat

tomcat的配置文件catalina.sh中增加:

JAVA_OPTS="-Dcom.sun.management.jmxremote.port=9998 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.58.164"

參數說明:

指定了JMX啟動的代理端口,這個端口就是visualvm要連接的端口(9998端口不能被別的程序使用netstat -an|gerp 9998) Dcom.sun.management.jmxremote.port=9998 指定了JMX是否啟用ssl Dcom.sun.management.jmxremote.authenticate=false 指定了JMX是否啟用鑒權(需要用戶名,密碼鑒權) Dcom.sun.management.jmxremote.authenticate=false 指定了服務器主機名 Djava.rmi.server.hostname=192.168.58.164

填寫主機名:

右鍵創建一個jmx連接:

填寫上端口號即可:

配置完成:

?

監控服務器上的java程序

相較于監控tomcat要麻煩很多,要預先啟動jstatd服務(${java_home}/bin目錄下)

jstatd是一個監控JVM從創建到銷毀過程中資源占用情況并提供遠程監控接口的RMI(Remote Method Invocation,遠程方法調用)服務器程序,它是一個Daemon程序(后臺進程),要保證遠程監控軟件連接到本地的話需要jstatd始終保持運行。

jstatd運行需要通過-J-Djava.security.policy=***指定安全策略,因此我們需要在服務器上建立一個指定安全策略的文件jstatd.all.policy(我放在了${java_home}/bin目錄下),文件內容如下:

grant codebase "file:/home/123/123/jdk1.5.0_15/lib/tools.jar" { permission java.security.AllPermission; };

然后使用這個策略文件啟動jstatd服務

[123@123 bin]$ pwd /home/123/123/jdk1.5.0_15/bin [123@123 bin]$ ./jstatd -J-Djava.security.policy=./jstatd.all.policy &

因為監控的過程中需要jstatd服務一直運行,所以加上了&,如果需要日志也可使用:

./jstatd -J-Djava.security.policy=./jstatd.all.policy -J-Djava.rmi.server.logCalls=true

接下來就可以在jvisualvm中配置監控該服務器上運行的java程序了,和在jvisualvm中配置監控tomcat服務器的操作過程是一樣的

需要特別注意的是,有時在配置遠程監控java程序的時候jvisualvm會報一個錯誤

點擊查看錯誤詳情:

?connection refused to host:127.0.0.1初步判斷和主機名有關系

[123@123 bin]# hostname -i 127.0.0.1 [123@123 bin]# hostname 192.168.58.168

修改完重啟jstatd服務(網上很多人說要修改主機的/etc/hosts文件,但是我自己測試修改/etc/hosts文件是沒有效果的,必須要修改主機名)

填寫主機名:

?

這里要選添加一個jstatd連接:

?

直接選擇默認配置即可(默認使用1099端口):

點擊ok后,168上的所有java程序就會自動列出:

?

PS:

jvisualvm也是可以安裝插件的,具體步驟為tool -> plugin ->aviable plugin,推薦一個非常好用的插件VisualGC

安裝完這個插件后,將會增加新的監控條目Visual GC,可以看到虛擬機內存各個區的使用情況

    總結

    以上是生活随笔為你收集整理的jvisualvm (Java VisualVM)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。