激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - 使用jvisualvm配合Visual GC插件監(jiān)控Java程序詳細(xì)總結(jié)

使用jvisualvm配合Visual GC插件監(jiān)控Java程序詳細(xì)總結(jié)

2022-01-13 10:38沒(méi)頭腦遇到不高興 Java教程

本節(jié)將會(huì)介紹一下jvisualvm的特性及作用、各個(gè)功能是如何使用的、最后會(huì)介紹jvisualvm的插件Visual GC的安裝及使用

jvisualvm介紹

VisualVM(All-in-One Java Troubleshooting Tool)是到目前為止隨JDK發(fā)布的功能最強(qiáng)大的運(yùn)行監(jiān)視和故障處理程序,它提供了運(yùn)行監(jiān)視、故障處理、性能分析(Profiling)等功能。VisuaIVM有一個(gè)很大的優(yōu)點(diǎn):不需要被監(jiān)視的程序基于特殊Agent運(yùn)
行,因此它對(duì)應(yīng)用程序的實(shí)際性能的影響很小,使得它可以直接應(yīng)用在生產(chǎn)環(huán)境中。

jdk8的文檔中https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html就有jvisualvm的使用介紹,

使用jvisualvm配合Visual GC插件監(jiān)控Java程序詳細(xì)總結(jié)

jvisualvm的官網(wǎng)介紹地址為:https://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/index.html 。

VisualVM基于NetBeans平臺(tái)開(kāi)發(fā),因此它一開(kāi)始就具備了插件擴(kuò)展功能的特性,通過(guò)插件擴(kuò)展支持,visualVM可以做到:

  • 顯示虛擬機(jī)進(jìn)程以及進(jìn)程的配置、環(huán)境信息(jps、jinfo)。
  • 監(jiān)視應(yīng)用程序的CPU、GC、堆、方法區(qū)以及線程的信息(jstat、jstack)。
  • dump以及分析堆轉(zhuǎn)儲(chǔ)快照(jmap、jhat)?
  • 方法級(jí)的程序運(yùn)行性能分析,找出被調(diào)用最多、運(yùn)行時(shí)間最長(zhǎng)的方法。
  • 離線程序快照:收集程序的運(yùn)行時(shí)配置、線程dump、內(nèi)存dump等信息建立一個(gè)快照,可以將快照發(fā)送開(kāi)發(fā)者處進(jìn)行Bug反饋。
  • 其他plugins的無(wú)限的可能性(常用的Visual GC,BTrace,Threads Inspector )……

VisualvM可以監(jiān)控本地和遠(yuǎn)程的Java應(yīng)用程序,可能會(huì)有部分功能在監(jiān)控遠(yuǎn)程應(yīng)用程序時(shí)無(wú)法使用。在jdk安裝目錄in的命令中找到j(luò)visualvm.exe雙擊打開(kāi)即可使用。

jvisualvm使用介紹

打開(kāi)jvisualvm后,可以看到如下界面,其可以監(jiān)控本地和遠(yuǎn)程的Java應(yīng)用程序,圖中紅框圈住的是本地程序,左側(cè)顯示的com.wkp.jvm.ServiceapiApplication (pid 8700)其實(shí)相當(dāng)于 jps -l 命令的輸出。可以看到有概述、監(jiān)視、線程、抽樣器和Profiler這幾個(gè)功能菜單,而Visual GC是添加的插件,默認(rèn)是沒(méi)有的(下面會(huì)介紹這個(gè)插件)。

1、概述里面顯示了JDK的版本、PID、JVM參數(shù)、系統(tǒng)屬性等(相當(dāng)于java -version,jps,jinfo等命令)。

使用jvisualvm配合Visual GC插件監(jiān)控Java程序詳細(xì)總結(jié)

Java應(yīng)用程序如果想能夠遠(yuǎn)程連接監(jiān)控,可以通過(guò)JMX和jstatd,如果使用JMX則啟動(dòng)時(shí)要添加JMX相關(guān)的參數(shù)(具體的遠(yuǎn)程連接感興趣的話,可以自己找文章看一下哈):

nohup java -jar -Djava.rmi.server.hostname=192.168.74.4 -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false test.jar &

2、監(jiān)視菜單,可以看到如下界面:展示了CPU使用情況、堆內(nèi)存大小及占用情況、類的裝載和線程情況。點(diǎn)擊堆Dump按鈕會(huì)生成堆dump文件,相當(dāng)于jmap命令。

使用jvisualvm配合Visual GC插件監(jiān)控Java程序詳細(xì)總結(jié)

雙擊打開(kāi)上面生成的dump文件,可以看到如下所示:點(diǎn)擊顯示線程信息會(huì)看到線程dump信息(跟jstack命令輸出的一樣),然后還有類、實(shí)例數(shù)和OQL控制臺(tái),這個(gè)和前面介紹的MAT類似。

使用jvisualvm配合Visual GC插件監(jiān)控Java程序詳細(xì)總結(jié)

點(diǎn)擊類按鈕,會(huì)看到如下所示:可以看到類的實(shí)例數(shù)、大小等,還有一個(gè)重要功能"與另一個(gè)堆存儲(chǔ)進(jìn)行比較",

使用jvisualvm配合Visual GC插件監(jiān)控Java程序詳細(xì)總結(jié)

可以在執(zhí)行GC前后分別產(chǎn)生堆dump文件,然后進(jìn)行對(duì)比分析哪些對(duì)象有了變化、是如何變化的。

使用jvisualvm配合Visual GC插件監(jiān)控Java程序詳細(xì)總結(jié)

3、線程菜單, 可以看到所有的線程信息:線程數(shù)量、線程狀態(tài)、線程名稱、線程運(yùn)行時(shí)間等,點(diǎn)擊線程Dump按鈕會(huì)跟jstack命令一樣生成線程dump文件。

使用jvisualvm配合Visual GC插件監(jiān)控Java程序詳細(xì)總結(jié)

4、抽樣器菜單,點(diǎn)擊“CPU”按鈕啟動(dòng)一個(gè) CPU 性能分析會(huì)話 ,VisualVM 會(huì)檢測(cè)應(yīng)用程序所有的被調(diào)用的方法。當(dāng)進(jìn)入一個(gè)方法時(shí),線程會(huì)發(fā)出一個(gè)“method entry”的事件,當(dāng)退出方法時(shí)同樣會(huì)發(fā)出一個(gè)“method exit”的事件,這些事件都包含了時(shí)間戳。然后 VisualVM 會(huì)把每個(gè)被調(diào)用方法的總的執(zhí)行時(shí)間和調(diào)用的次數(shù)按照運(yùn)行時(shí)長(zhǎng)展示出來(lái)。

此外,我們也可以通過(guò)性能分析結(jié)果下方的方法名過(guò)濾器對(duì)分析結(jié)果進(jìn)行過(guò)濾。

使用jvisualvm配合Visual GC插件監(jiān)控Java程序詳細(xì)總結(jié)

點(diǎn)擊抽樣器中的內(nèi)存會(huì)看Java程序中的類的實(shí)例數(shù)、線程分配的內(nèi)存等信息。

5、Profiler分析器:跟上面的抽樣器類似,也可以選擇CPU或者內(nèi)存進(jìn)行監(jiān)控,這里就不貼圖了。

如果你是通過(guò)雙擊jvisualvm.exe打開(kāi)的,則在你點(diǎn)擊Profiler中的CPU或者內(nèi)存的時(shí)候會(huì)出現(xiàn) VisualVm的Profiler一直轉(zhuǎn)圈:正在連接到目標(biāo)VM,解決方式就是通過(guò)命令啟動(dòng),并且添加啟動(dòng)參數(shù)即可解決。

jvisualvm -J-Dorg.netbeans.profiler.separateConsole=true //-J即表示JVM OPTION:允許帶JVM參數(shù)啟動(dòng)

C:Program Filesjava8jdk1.8.0_112in>jvisualvm -J-Dorg.netbeans.profiler.separateConsole=true

點(diǎn)擊Profiler中的CPU會(huì)顯示方法的執(zhí)行時(shí)間、調(diào)用次數(shù)等

點(diǎn)擊Profiler中的內(nèi)存會(huì)對(duì)內(nèi)存進(jìn)行分析,會(huì)顯示分配的對(duì)象,對(duì)象的大小,對(duì)象的年齡等信息。

Visual GC插件安裝及使用

jvisulaVM如何添加插件:https://visualvm.github.io/index.html,visual GC插件下載地址為:https://visualvm.github.io/pluginscenters.html,根據(jù)自己的jdk版本選擇對(duì)應(yīng)的插件版本,并復(fù)制插件下載鏈接

使用jvisualvm配合Visual GC插件監(jiān)控Java程序詳細(xì)總結(jié)

點(diǎn)擊VisualVm的工具->插件,開(kāi)始的時(shí)候可能可用插件顯示為0,可用在設(shè)置里面添加,把上面的鏈接地址復(fù)制進(jìn)去,確定之后可用插件列表里面就可以看到了。在可用插件列表中選中,然后點(diǎn)擊安裝,安裝完成后重啟即可看到Visual GC插件。

使用jvisualvm配合Visual GC插件監(jiān)控Java程序詳細(xì)總結(jié)

打開(kāi)Visual GC插件可以看到整個(gè)區(qū)域分為三部分:spaces、graphs、histogram

使用jvisualvm配合Visual GC插件監(jiān)控Java程序詳細(xì)總結(jié)

1,spaces區(qū)域:代表虛擬機(jī)內(nèi)存分布情況。從圖中可以看出,虛擬機(jī)被分為Metaspace、Old、Eden、S0、S1

2,Graphs區(qū)域:內(nèi)存使用詳細(xì)介紹

  • Compile Time(編譯時(shí)間):圖中顯示編譯了4070個(gè)類總耗時(shí)14.026s,一個(gè)駝峰表示一次JIT編譯,越窄表示時(shí)間越短
  • Class Loader Time(類加載時(shí)間):表示加載、卸載類的數(shù)量、總消耗時(shí)間
  • GC Time(GC Time):顯示GC次數(shù)、耗時(shí)、最近垃圾收集的原因
  • Eden Space(Eden 區(qū)):括號(hào)內(nèi)的8.500M表示最大容量,8.500M表示當(dāng)前容量,后面的2.259M表示當(dāng)前占用空間,42 collections表示垃圾收集次數(shù),239.693ms表示垃圾收集花費(fèi)時(shí)間
  • Survivor 0/Survivor 1(S0和S1區(qū)):和Eden Space類似
  • Old Gen(老年代):和Eden Space類似
  • Metaspace(元空間):表示最大空間、當(dāng)前空間、當(dāng)前占用大小。

3,histogram:顯示survivor區(qū)域?qū)ο蟮哪挲g

Visual GC的histogram可能會(huì)顯示不受此JVM支持,因?yàn)槭抢占鞯脑颍琂ava應(yīng)用默認(rèn)使用UseParallelGC 并行收集器,這時(shí)候是不顯示的,不用并行收集器就可以了,例如改為CMS+Parnew就能正常顯示。

使用jvisualvm配合Visual GC插件監(jiān)控Java程序詳細(xì)總結(jié)

  • Tenuring Threshold:表示新生代年齡大于當(dāng)前值則進(jìn)入老年代
  • Max Tenuring Threshold:表示新生代最大年齡值。
  • Tenuring Threshold與Max Tenuring Threshold區(qū)別:Max Tenuring Threshold是一個(gè)最大限定,所有的新生代年齡都不能超過(guò)當(dāng)前值,而Tenuring Threshold是個(gè)動(dòng)態(tài)計(jì)算出來(lái)的臨時(shí)值,一般情況與Max Tenuring Threshold相等,如果在Suivivor空間中,相同年齡所有對(duì)象大小的總和大于Survivor空間的一半,則年齡大于或者等于該年齡的對(duì)象就都可以直接進(jìn)入老年代(如果計(jì)算出來(lái)年齡段是6,則Tenuring Threshold=6,age>=6的Suivivor對(duì)象都符合要求),它才是新生代是否進(jìn)入老年代判斷的依據(jù)。
  • Desired Survivor Size:Survivor空間大小驗(yàn)證闕值(默認(rèn)是survivor空間的一半),用于Tenuring Threshold判斷對(duì)象是否提前進(jìn)入老年代。
  • Current Survivor Size:當(dāng)前survivor空間大小

到此這篇關(guān)于使用jvisualvm配合Visual GC插件監(jiān)控Java程序詳細(xì)總結(jié)的文章就介紹到這了,更多相關(guān)jvisualvm 配合 Visual GC監(jiān)控Java程序內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/u012988901/article/details/102517829

延伸 · 閱讀

精彩推薦
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)搶紅包功能,采用多線程模擬多人同時(shí)搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對(duì)于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個(gè)非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7482021-02-04
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程升級(jí)IDEA后Lombok不能使用的解決方法

    升級(jí)IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級(jí),尋思已經(jīng)有好久沒(méi)有升過(guò)級(jí)了。升級(jí)完畢重啟之后,突然發(fā)現(xiàn)好多錯(cuò)誤,本文就來(lái)介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程xml與Java對(duì)象的轉(zhuǎn)換詳解

    xml與Java對(duì)象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對(duì)象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程20個(gè)非常實(shí)用的Java程序代碼片段

    20個(gè)非常實(shí)用的Java程序代碼片段

    這篇文章主要為大家分享了20個(gè)非常實(shí)用的Java程序片段,對(duì)java開(kāi)發(fā)項(xiàng)目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
主站蜘蛛池模板: 欧美亚洲综合网 | 久久影院免费观看 | 中文字幕在线永久 | 九九精品在线观看视频 | 亚洲小视频在线 | 成人免费看视频 | 国产精品福利一区 | 久久蜜臀一区二区三区av | 久久成人综合网 | 爱爱插插视频 | 日本在线视频免费观看 | 中文字幕极速在线观看 | 日韩视频中文 | 91短视频在线视频 | 欧美激情精品久久久久久黑人 | 国产88久久久国产精品免费二区 | 18一20岁一级毛片 | 国产91丝袜在线播放 | 全黄裸片武则天艳史 | 亚洲精品久久久久久久久久久 | 色综av | 92自拍视频 | 日本精品久久久久 | 日日草夜夜操 | 久久新网址 | 精品在线视频播放 | 国产一区二区在线观看视频 | 久久久久久久一区二区 | 成人午夜视频免费在线观看 | 青青草成人免费视频在线 | 欧美日韩视频第一页 | 黄色成人av在线 | 一区二区三区小视频 | 97伦理| 天天夜夜操操 | 黄色特级视频 | 国产高潮好爽好大受不了了 | 欧美一区二区三区久久久久久桃花 | 成人艳情一二三区 | 免费观看视频在线 | 久久精品国产一区二区 |