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

你的程序出現(xiàn)了bug?這幾款JVM工具也許可以幫你排查

云計(jì)算 虛擬化
在平時的開發(fā)當(dāng)中我們總是會遇到各種各樣的問題,比如說內(nèi)存泄漏、死鎖、CPU等。

[[373685]]

在平時的開發(fā)當(dāng)中我們總是會遇到各種各樣的問題,比如說內(nèi)存泄漏、死鎖、CPU等。遇到問題不可怕,關(guān)鍵是我們?nèi)绾稳ヅ挪檫@些錯誤,對癥下藥才是根本。不過對于很多人來說,往往找不到這些問題的根本所在,因此這篇文章主要是讓我們掌握一些工具來分析到底是哪里出現(xiàn)了問題。

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

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

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

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

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

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

 

我們會發(fā)現(xiàn)很多這樣的exe文件,這里面有很多都是性能監(jiān)控工具。我們就抽出來幾個進(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)儲快照(heapdump文件)
jhat(JVM Heap Dump Browser) 分析內(nèi)存轉(zhuǎn)儲快照,不推薦使用,消耗資源而且慢
jstack(Stack Trace for Java) 顯示虛擬機(jī)的線程快照
JConsole JMX的可視化管理工具
VisualVM 多合一故障管理工具

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

二、工具

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

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

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

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

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

 

2、jstack:堆棧跟蹤工具

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

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

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

 

第二個參數(shù):vmid

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

第三個參數(shù):interval

interval是采樣時間間隔,

第四個參數(shù):count

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

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

 

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

命令格式:

  1. jinfo [option] pid 

第一個參數(shù):option

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

第二個參數(shù):pid

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

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

 

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

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

  1. jmap [option] vmid 

第一個參數(shù):

 

第二個參數(shù):vmid

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

在cmd中測試:

 

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

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

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

這個工具相比較前面幾個工具,使用率比較高,很重要。它是一個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工具先建立一個線程運(yùn)行著)

 

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

 

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

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

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

 

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

 

三、總結(jié)

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

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

 

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

2018-01-05 11:55:23

數(shù)據(jù)庫PostgreSQL

2021-09-30 16:22:34

程序員工具編程

2019-10-30 09:02:04

JavaCPU 線程

2019-03-04 13:11:16

iOS快捷指令APP

2024-01-24 18:55:56

ChatGPT聊天機(jī)器人

2018-03-24 20:32:08

編程工具瀏覽器

2014-04-02 14:00:41

移動應(yīng)用程序工具

2019-08-15 15:08:34

程序員開發(fā)工具

2017-10-24 12:32:03

小程序APPbug

2011-09-28 12:53:06

LinuxUbuntu

2018-10-08 09:44:51

無線AP故障

2018-12-10 10:30:40

阿里Linux命令

2025-03-31 00:00:02

2024-01-07 17:11:53

網(wǎng)絡(luò)IDC機(jī)房

2015-07-30 09:56:48

2022-09-20 14:11:37

JVM調(diào)優(yōu)命令

2021-03-25 16:15:24

SQL工具慢查詢

2015-08-25 09:23:00

2013-12-12 09:39:20

HadoopHadoop工具大數(shù)據(jù)

2021-05-20 15:53:16

Windows軟件工具
點(diǎn)贊
收藏

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