偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Java七武器系列多情環(huán) --多功能Profiling工具 JVisual VM

開發(fā) 開發(fā)工具
Java VisualVM。是一款可視化的 Java VM 應(yīng)用分析工具,本文我們以本地進(jìn)程為例,來介紹下JVisual VM 常見功能。

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

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

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

啟動(dòng)后是這個(gè)樣子:

JVisual VM啟動(dòng)后

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

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

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

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

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

JVisual VM

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

概述

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

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

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

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

監(jiān)視

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

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

監(jiān)視

線程

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

抽樣器

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

Profiler

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

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

CPU profiling,分析方法的執(zhí)行時(shí)間

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

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

這兩個(gè)功能和工具 MAT 的幾個(gè)功能類似。

Visual GC

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

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

可視化的GC 查看工具

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

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

BTrace

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

BTrace

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

  1. @BTrace(unsafe=true

這樣即可,checkbox會(huì)自動(dòng)選中。

堆Dump

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

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

堆Dump

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

堆Dump

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

堆Dump

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

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

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2017-03-26 23:16:05

Java線程jstack

2017-06-09 15:17:48

Java線程jstack

2020-08-31 09:01:16

GlancesLinux系統(tǒng)監(jiān)控工具

2009-12-23 17:10:26

2009-10-27 13:20:08

2011-02-21 12:43:00

RackTables網(wǎng)絡(luò)監(jiān)控網(wǎng)絡(luò)管理

2025-05-13 08:20:58

2019-10-29 06:30:31

告警疲勞網(wǎng)絡(luò)安全安全風(fēng)險(xiǎn)

2017-10-17 14:02:30

jvm調(diào)優(yōu)工具

2017-06-02 09:52:50

2021-07-16 09:55:46

數(shù)據(jù)工具軟件

2018-05-27 08:24:55

2017-12-15 09:05:16

Linux終端高手Bash shell

2010-03-05 17:24:04

Android智能系統(tǒng)

2009-12-23 17:20:55

Fedora GCC

2018-12-12 08:15:13

物聯(lián)網(wǎng)設(shè)備物聯(lián)網(wǎng)IOT

2009-09-14 09:36:19

Chrome多功能平臺(tái)谷歌

2009-06-01 08:43:49

PalmWebOS移動(dòng)OS

2024-01-31 08:33:06

C++編程計(jì)算器

2010-08-31 16:23:10

DB2Quest Centr管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)