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

看一下JVM中那些常用的性能監(jiān)控工具

云計(jì)算 虛擬化
從這篇文章當(dāng)中我們主要是分析JDK自帶的工具,把理論應(yīng)用于實(shí)踐。

在之前的文章中,主要是分析了JVM的內(nèi)存結(jié)構(gòu)、類加載機(jī)制和垃圾回收機(jī)制。文章的順序也是循序漸進(jìn)的,從這篇文章當(dāng)中我們主要是分析JDK自帶的工具,把理論應(yīng)用于實(shí)踐。

首先我們先對(duì)幾種要講的工具進(jìn)行一個(gè)概述,然后再分別分析:

一、性能監(jiān)控工具概述

工具主要是為了解決問題而生的,就是由于我們的程序存在著一些性能問題,才有了這些工具。其實(shí)當(dāng)我們?cè)谙螺d完成JDK之后,那些工具就被SUN公司隨之送給我們了。

我們可以在我們的JDK安裝目錄,下看看會(huì)有很多這樣的工具。

我們會(huì)發(fā)現(xiàn)很多這樣的exe文件,這里面有很多都是性能監(jiān)控工具。我們就抽出來幾個(gè)進(jìn)行講解。

工具名稱 主要作用
jps(JVM Process Status Tool) 顯示指定系統(tǒng)中所有的HotSpot虛擬機(jī)進(jìn)程
jstat(JVM Statistics Monitoring Tool) 收集HotSpot虛擬機(jī)各方面的運(yùn)行數(shù)據(jù)
jinfo(Configuration Info for Java) 顯示虛擬機(jī)配置信息
jmap(Memory Map for Java) 生成虛擬機(jī)的內(nèi)存轉(zhuǎn)儲(chǔ)快照(heapdump文件)
jhat(JVM Heap Dump Browser) 分析內(nèi)存轉(zhuǎn)儲(chǔ)快照,不推薦使用,消耗資源而且慢
jstack(Stack Trace for Java) 顯示虛擬機(jī)的線程快照
JConsole JMX的可視化管理工具
VisualVM 多合一故障管理工具

常見的幾個(gè)工具都已經(jīng)列出來了,還有一些其他的工具,其實(shí)用起來比JDK自帶的還要好,我會(huì)在今后的文章中列出來。OK,我們就一個(gè)一個(gè)去分析一下這些工具是干嘛的,以及如何去使用的。

二、工具

1、jps:虛擬機(jī)進(jìn)程狀況工具

jps主要用來輸出JVM中運(yùn)行的進(jìn)程狀態(tài)信息。語法格式如下:

  1. jps [options] [hostid] 
  2.    第一個(gè)參數(shù):options 
  3.  
  4. -q 不輸出類名、Jar名和傳入main方法的參數(shù) 
  5. -m 輸出傳入main方法的參數(shù) 
  6. -l 輸出main類或Jar的全限名 
  7. -v 輸出傳入JVM的參數(shù) 
  8.     第二個(gè)參數(shù):hostid 

主機(jī)或者是服務(wù)器的id,如果不指定,就默認(rèn)為當(dāng)前的主機(jī)或者是服務(wù)器。

我是在Windows10系統(tǒng)下測(cè)試的,當(dāng)然你可以在linux下試驗(yàn),方式是一樣的,結(jié)果可能有不同。你可以選擇不同的參數(shù)選項(xiàng)來進(jìn)行測(cè)試。打開CMD輸入相應(yīng)命令

2、jstack:堆棧跟蹤工具

jstack用于生成虛擬機(jī)當(dāng)前時(shí)刻的線程快照。語法格式如下:

  1. jstack [option] vmid 
  2. 第一個(gè)參數(shù):option 
  3.  
  4. 選項(xiàng)  作用 
  5. -F  當(dāng)正常輸出的請(qǐng)求不被相應(yīng)時(shí)候,強(qiáng)制輸出線程堆棧 
  6. -l  出堆棧外,顯示關(guān)于鎖的附加信息 
  7. -m  如果調(diào)用本地方法的話,可以顯示C/C++的堆棧 
  8. 第二個(gè)參數(shù):vmid 

vmid是Java虛擬機(jī)ID,在Linux/Unix系統(tǒng)上一般就是進(jìn)程ID。

我們直接在CMD中操作一下:

3、jstat:虛擬機(jī)統(tǒng)計(jì)信息監(jiān)控工具

jstat監(jiān)視虛擬機(jī)各種運(yùn)行狀態(tài)信息,可以顯示本地或者是遠(yuǎn)程虛擬機(jī)進(jìn)程中的類裝載、內(nèi)存、垃圾收集、JIT編譯等運(yùn)行數(shù)據(jù)。語法格式如下:

  1. jstat [ generalOption | outputOptions vmid [interval] [count]] ] 
  2. 第一個(gè)參數(shù):generalOption | outputOptions 

這個(gè)參數(shù)表示的option,代表著用戶希望查詢的虛擬機(jī)信息,分為類加載、垃圾收集、運(yùn)行期編譯狀況3類。

第二個(gè)參數(shù):vmid

vmid是Java虛擬機(jī)ID,在Linux/Unix系統(tǒng)上一般就是進(jìn)程ID。

第三個(gè)參數(shù):interval

interval是采樣時(shí)間間隔,

第四個(gè)參數(shù):count

count表示的是采樣數(shù)。

下面我們就是用一下這個(gè)工具,打開我們的CMD,輸入相應(yīng)的命令:

4、jinfo:實(shí)時(shí)地查看和調(diào)整虛擬機(jī)各項(xiàng)參數(shù)

命令格式:

  1. jinfo [option] pid 

第一個(gè)參數(shù):option

  1. 選項(xiàng)  作用 
  2. -v  查看虛擬機(jī)啟動(dòng)時(shí)顯示指定的參數(shù)列表 
  3. -flag   查看虛擬機(jī)啟動(dòng)時(shí)未被指定的參數(shù)的默認(rèn)值 
  4. -sysprops   打印虛擬機(jī)進(jìn)程的System.getProperties()的內(nèi)容 

第二個(gè)參數(shù):pid

指定顯示的進(jìn)程id。

在CMD中進(jìn)行測(cè)試:

5、jmap:生成虛擬機(jī)的內(nèi)存轉(zhuǎn)儲(chǔ)快照(heapdump文件)

jmap(Memory Map for Java,內(nèi)存映像工具),用于生成堆轉(zhuǎn)存的快照,一般是heapdump或者dump文件。如果不適用jmap命令,可以使用-XX:+HeapDumpOnOutOfMemoryError參數(shù),當(dāng)虛擬機(jī)發(fā)生內(nèi)存溢出的時(shí)候可以產(chǎn)生快照?;蛘呤褂胟ill -3 pid也可以產(chǎn)生。jmap的作用并不僅僅是為了獲取dump文件,它可以查詢finalize執(zhí)行隊(duì)列,java堆和永久代的詳細(xì)信息,如空間使用率,當(dāng)前用的哪種收集器。命令格式如下:

  1. jmap [option] vmid 

第一個(gè)參數(shù):

第二個(gè)參數(shù):vmid

vmid是Java虛擬機(jī)ID,在Linux/Unix系統(tǒng)上一般就是進(jìn)程ID.

在cmd中測(cè)試:

6、jhat:分析內(nèi)存轉(zhuǎn)儲(chǔ)快照,不推薦使用,而且慢

由于這個(gè)工具功能比較簡(jiǎn)陋,運(yùn)行起來也比較耗時(shí),所以這個(gè)工具不推薦使用,推薦使用MAT。

7、JConsole:JMX的可視化管理工具

這個(gè)工具相比較前面幾個(gè)工具,使用率比較高,很重要。它是一個(gè)java GUI監(jiān)視工具,可以以圖表化的形式顯示各種數(shù)據(jù)。并可通過遠(yuǎn)程連接監(jiān)視遠(yuǎn)程的服務(wù)器VM。用java寫的GUI程序,用來監(jiān)控VM,并可監(jiān)控遠(yuǎn)程的VM,非常易用,而且功能非常強(qiáng)。

在cmd里面輸入 jconsole,選則進(jìn)程就可以了。(前提是在IDE工具先建立一個(gè)線程運(yùn)行著)

然后我們選擇了相應(yīng)的選項(xiàng)之后,進(jìn)入這個(gè)工具就會(huì)出現(xiàn)下面這個(gè)界面

在上面有菜單,我們可以選擇其中一個(gè)進(jìn)行查看,就可以了,這個(gè)用具用起來很方便,也是我之前用的比較多的工具。

8、VisualVM:多合一故障管理工具

這個(gè)工具也很牛bility。它同jconsole都是一個(gè)基于圖形化界面的、可以查看本地及遠(yuǎn)程的JAVA GUI監(jiān)控工具,Jvisualvm同jconsole的使用方式一樣,直接在命令行打入jvisualvm即可啟動(dòng),jvisualvm界面更美觀一些,數(shù)據(jù)更實(shí)時(shí):

最上面也有菜單,你可以選擇不同的選項(xiàng)來展示。自己動(dòng)手試一遍是最好的。

三、總結(jié)

這些工具就先寫這么多,在文章一開始我們其實(shí)已經(jīng)發(fā)現(xiàn)了,jdk自帶的工具那是超級(jí)的多,而且隨著jdk版本的不斷更新,工具還有不斷加強(qiáng)增多的趨勢(shì),想要每一個(gè)都掌握那太費(fèi)時(shí)間了,我們遇到哪些問題去搜索一下,看看能用到哪些工具就可以了,列出的這幾種工具,對(duì)于初學(xué)者來說還是比較適用的。

 本文轉(zhuǎn)載自微信公眾號(hào)「愚公要移山」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系愚公要移山公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: 愚公要移山
相關(guān)推薦

2011-10-12 11:07:12

iCloudiOS5蘋果

2021-08-05 07:28:27

SQL觸發(fā)器結(jié)構(gòu)

2010-03-15 10:35:46

三層交換

2023-10-23 10:20:25

2017-03-03 10:37:07

Java泛型設(shè)計(jì)

2020-11-13 07:27:26

Windows10

2019-11-01 08:49:07

JVM監(jiān)控性能

2021-07-08 06:47:19

JVM監(jiān)控工具

2019-06-17 05:00:53

預(yù)測(cè)性維護(hù)物聯(lián)網(wǎng)IOT

2021-06-24 07:54:20

vite 靜態(tài)處理public

2020-09-17 09:18:49

iOS 14蘋果推送

2022-11-09 11:17:24

tee命令

2018-12-21 15:40:33

2018-12-04 15:50:03

轉(zhuǎn)行Python爬蟲

2019-06-24 09:57:39

網(wǎng)絡(luò)工具調(diào)試

2010-04-19 14:37:14

Oracle監(jiān)控

2018-12-20 11:20:47

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

2024-07-25 13:52:20

OpenAI虧損運(yùn)營(yíng)

2012-03-02 14:20:46

JavaJVM

2020-07-23 07:26:49

JVM類加載器
點(diǎn)贊
收藏

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