日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java七武器系列多情環(huán)--多功能Profiling工具JVisualVM

開發(fā) Java 的朋友一定都遇到過應(yīng)用不同種類的問題,有些時候是應(yīng)用 Bug 分析,有些時候是應(yīng)用性能調(diào)優(yōu),應(yīng)用的 Profiling,GC 分析等。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),海林企業(yè)網(wǎng)站建設(shè),海林品牌網(wǎng)站建設(shè),網(wǎng)站定制,海林網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,海林網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

這個時候,有不少的工具可供選擇,有商業(yè)的,有開源的可供不同的場景下使用。我們本次的多功能 Profile 工具,依然是 JDK 自帶的一款,可用于多種場景下的應(yīng)用監(jiān)控于分析。

這款工具就是JVisual VM,全稱是 Java VisualVM。是一款可視化的 Java VM 應(yīng)用分析工具。

啟動后是這個樣子:

分本地和遠程兩種,羅列了當(dāng)前的 JVM 進程。 遠程的進程是通過 JMX 進行連接,有一些本地的 Profile 功能不支持。

我們以本地進程為例,來介紹下JVisual VM 常見功能。

雙擊要分析的 JVM 進程,在打開的 Tab 中選擇功能,默認會顯示概述、監(jiān)視、線程、抽樣器和 Profiler 這幾項。

由于Visual VM 實現(xiàn)和 NetBeans 一致,所以可以通過插件的方式,增加許多功能。

在【工具】菜單,選擇【插件】,打開下圖,然后選擇要安裝的插件,也可以將插件下載到本地再安裝。格式是一個擴展名為nbm類型的文件。

像我們稍后要介紹的Visual GC, BTrace 都是通過插件安裝,來增加對應(yīng)功能的。

概述

在概述這個 Tab 中,會有當(dāng)前 JVM 進程的一些基本信息,包含 JVM的參數(shù),系統(tǒng)屬性,Main-class 等等。類似如下圖:

請注意上圖紅框,這個是一般啟動時配置的一個JVM選項,可以在 OOM 產(chǎn)生時生成一個堆的 dump,方便事后分析。如果沒有在啟動時配置,默認是關(guān)閉的。這里也顯示是禁用。

通過 Visual VM,可以實時變更該選項,右擊對應(yīng)的 JVM 進程,在彈出菜單中選擇【在出現(xiàn)OOME時生成堆 Dump】

選擇之后,對應(yīng)的概述處變?yōu)閱⒂谩?/p>

監(jiān)視

在該 Tab 中會顯示 CPU,堆的使用,已裝入的類的情況,以及線程的活動情況等。關(guān)鍵是這里有兩個按鈕【執(zhí)行垃圾回收】和【堆 Dump】。

垃圾回收會進行一次 Full GC,堆的Dump會生成一個當(dāng)前的dump文件供分析。

線程

線程 Tab 會將當(dāng)前進程的所有線程按時間線的形式開出來??梢愿鶕?jù)不同的線程狀態(tài)進行查看。這里還可以進行線程的 Dump,和 jstack 功能一致,生成一個所有線程的運行調(diào)用圖。(jstack,可以查看前面的文章了解。Java七武器系列霸王槍 -- 線程狀態(tài)分析 jstack)

抽樣器

可以按照 CPU 和內(nèi)存進行抽樣, 和Profiler類似,我們后面介紹。

Profiler

在眾多功能中,該功能可用于進行應(yīng)用的 Profiling,分析應(yīng)用方法的占用時間,內(nèi)存中各個類的對象數(shù)量及大小等。

下方的圖是CPU profiling,分析方法的執(zhí)行時間。

這張圖是內(nèi)存的 profiling,顯示對象在內(nèi)存中的數(shù)量及大小

通過這兩種 profiling,對于應(yīng)用中有內(nèi)存占用較多的情況發(fā)生時,可以觀察是哪些對象占用,是否有些代碼中存在的總是導(dǎo)致生成的大量無用的對象等。

這兩個功能和工具 MAT 的幾個功能類似。

Visual GC

注意:該 Tab 需要安裝插件后才能顯示。

一直以來,Java 的 GC 對于我們來說只能通過在命令行中展示的方式,或者是從 gc log 里查看一些 執(zhí)行情況,Visual VM 的 Visual GC 插件,可以讓我們更直觀的觀察 堆的占用,GC 的執(zhí)行情況等,是個可視化的GC 查看工具。

通過這個工具,能夠觀察堆各個區(qū)域的大小,占用情況等。比如在配置了Xms, PermSize, 或者一些 xxxRation之類的,具體分到各個代的大小是多少,除了計算之外,可以在這里直觀的查看。

同時,在每個每個 Gen 旁邊,都有顯示 GC 的執(zhí)行次數(shù)和時間。

BTrace

前面的文章寫過使用 BTrace 分析總是,當(dāng)時是介紹通過命令行的方式。在 Visual VM 的插件里,也有 BTrace 的插件,安裝之后,可以在本地的 JVM 進程上右擊選擇 【Trace application】,就會打開該 Tab,然后在窗口中直接編譯 Trace 腳本,執(zhí)行結(jié)果也會在窗口中顯示。

注意這里有一個Unsafe的開關(guān),可以使用BTrace的更多操作,靠選擇checkbox是打不開的。需要在@BTrace注解后增加內(nèi)容,格式如下:

 
 
 
 
  1. @BTrace(unsafe=true) 

這樣即可,checkbox會自動選中。

堆Dump

生成堆dump之后,相當(dāng)于對當(dāng)前的堆做了一個鏡像,可以基于此分析應(yīng)用內(nèi)的一些問題。

整個dump中,除了摘要外,還有類,實例數(shù)等和 Profiler 中實時內(nèi)容一致。此外,還包含線程的 stackTrace。

在類中雙擊任意一個要關(guān)注的,會打開實例數(shù)視圖,顯示該類對應(yīng)的各個實例的數(shù)據(jù)

在OQL控制臺中可以通過招待OQL來查看對象的信息,和前面 SA中介紹的類似。(Java七武器系列長生劍 -- Java虛擬機的顯微鏡 Serviceability Agent)

發(fā)現(xiàn)沒有,其實 JDK 提供的這些工具中,有許多功能都是相同的,通過統(tǒng)一的接口,在不同的應(yīng)用中提供相應(yīng)的數(shù)據(jù),一處水源供全球。

【本文為專欄作者“侯樹成”的原創(chuàng)稿件,轉(zhuǎn)載請通過作者微信公眾號『Tomcat那些事兒』獲取授權(quán)】


分享題目:Java七武器系列多情環(huán)--多功能Profiling工具JVisualVM
網(wǎng)頁地址:http://www.5511xx.com/article/dhiocej.html