自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

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

啟動后是這個樣子:

JVisual VM啟動后

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

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

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

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

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

JVisual VM

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

概述

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

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

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

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

監(jiān)視

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

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

監(jiān)視

線程

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

抽樣器

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

Profiler

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

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

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

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

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

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

Visual GC

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

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

可視化的GC 查看工具

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

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

BTrace

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

BTrace

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

  1. @BTrace(unsafe=true

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

堆Dump

生成堆dump之后,相當于對當前的堆做了一個鏡像,可以基于此分析應用內的一些問題。

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

堆Dump

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

堆Dump

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

堆Dump

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

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

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

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2017-06-09 15:17:48

Java線程jstack

2017-03-26 23:16:05

Java線程jstack

2020-08-31 09:01:16

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

2009-12-23 17:10:26

2011-02-21 12:43:00

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

2009-10-27 13:20:08

2017-10-17 14:02:30

jvm調優(yōu)工具

2019-10-29 06:30:31

告警疲勞網(wǎng)絡安全安全風險

2017-06-02 09:52:50

2021-07-16 09:55:46

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

2018-05-27 08:24:55

2009-12-23 17:20:55

Fedora GCC

2010-03-05 17:24:04

Android智能系統(tǒng)

2009-06-01 08:43:49

PalmWebOS移動OS

2009-09-14 09:36:19

Chrome多功能平臺谷歌

2018-12-12 08:15:13

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

2024-01-31 08:33:06

C++編程計算器

2017-12-15 09:05:16

Linux終端高手Bash shell

2010-08-31 16:23:10

DB2Quest Centr管理
點贊
收藏

51CTO技術棧公眾號