Java自帶的效能監測工具用法簡介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm
啟動jvm監控服務。它是一個基於rmi的應用,向遠端機器提供本機jvm應用程式的資訊。預設埠1099。
例項:jstatd -J-Djava.security.policy=my.policy
my.policy檔案需要自己建立,內如如下:
Java程式碼
- grant codebase "file:${java.home}/../lib/tools.jar" {
- permission java.security.AllPermission;
- };
這是安全策略檔案,因為jdk對jvm做了jaas的安全檢測,所以我們必須設定一些策略,使得jstatd被允許作網路操作
二、jps
列出所有的jvm例項
例項:
jps
列出本機所有的jvm例項
jps 192.168.0.77
列出遠端伺服器192.168.0.77機器所有的jvm例項,採用rmi協議,預設連線埠為1099
(前提是遠端伺服器提供jstatd服務)
輸出內容如下:
[email protected]:~/data/ebook/java/j2se/jdk_gc$ jps
6286 Jps
6174 Jstat
詳細請看連線:http://www.blogjava.net/aoxj/archive/2007/12/29/171447.html
三、jconsole
用法: jconsole [ -interval=n ] [ -notile ] [ -pluginpath ] [ -version ] [ connection ...]
-interval 將更新間隔時間設定為 n 秒(預設值為 4 秒)
-notile 最初不平鋪顯示視窗(對於兩個或更多連線)
-pluginpath 指定 jconsole 用於查詢外掛的路徑
-version 輸出程式版本
connection = pid || host:port || JMX URL (service:jmx:://...)
pid 目標程序的程序 ID
host 遠端主機名或 IP 地址
port 用於遠端連線的埠號
-J 對正在執行 jconsole 的 Java 虛擬機器指定輸入引數
在cmd中輸入命令:jconsole 3980[java程序號] 彈出下圖
四、jinfo
用法:
jinfo [ option ] pid
jinfo [ option ] executable core
jinfo [ option ] [[email protected]]remote-hostname-or-IP
引數:
pid 程序號
executable 產生core dump的java executable
core core file
remote-hostname-or-IP 主機名或ip
server-id 遠端主機上的debug server的唯一id
選項:
no option 列印命令列引數和系統屬性
-flags 列印命令列引數
-sysprops 列印系統屬性
-h 幫助
觀察執行中的java程式的執行環境引數:引數包括Java System屬性和JVM命令列引數
例項:
jinfo 2083
其中2083就是java程序id號,可以用jps得到這個id號。我在windows上嘗試輸入這個命令,但是不管用,於是我輸入了下面這個命令:
jinfo -flag MaxPermSize 3980
顯示如下:
-XX:MaxPermSize=67108864
五、jstack
該命令應該如何使用呢?首先需要用jstack命令產生java程序的dump檔案,然後分析dump檔案中的資料,下面的連線是一篇講述如何分析jstack產生的dump檔案資料的文章,寫的非常不錯:
http://www.blogjava.net/jzone/articles/303979.html
六、jmap(linux下特有,也是很常用的一個命令)
觀察執行中的jvm實體記憶體的佔用情況。
引數如下:
-heap:列印jvm heap的情況
-histo:列印jvm heap的直方圖。其輸出資訊包括類名,物件數量,物件佔用大小。
-histo:live :同上,但是隻答應存活物件的情況
-permstat:列印permanent generation heap情況
命令使用:
jmap -heap 2083
可以觀察到New Generation(Eden Space,From Space,To Space),tenured generation,Perm Generation的記憶體使用情況
jmap -histo 2083 | jmap -histo:live 2083
可以觀察heap中所有物件的情況(heap中所有生存的物件的情況)。包括物件數量和所佔空間大小。
jmap -histo java程序id
可以檢視java程序中的所有例項、例項的個數,可用於查詢單例物件是否真的只生成了一個例項。
在控制檯,輸入命令“jmap -histo 7329 > histo_dump”,得到如下結果:
Java程式碼
- num #instances #bytes class name
- ---------------------------------------------
- 1: 605348 68849960 [C
- 2: 1609734 51511488 java.util.concurrent.ConcurrentHashMap$Segment
- 3: 1610022 38640528 java.util.concurrent.locks.ReentrantLock$NonfairSync
- 4: 70784 31478168 [I
- 5: 218224 27628072 <constMethodKlass>
- 6: 1609734 26423552 [Ljava.util.concurrent.ConcurrentHashMap$HashEntry;
- 7: 40379 24430792 [B
- 8: 218224 19211544 <methodKlass>
- 9: 602848 14468352 java.lang.String
- 10: 19374 11640184 <constantPoolKlass>
- 11: 236950 11451216 <symbolKlass>
- 12: 283746 11349840 java.util.concurrent.ConcurrentHashMap$ValueIterator
- 13: 19374 8826272 <instanceKlassKlass>
- 14: 100613 8048728 [Ljava.util.concurrent.ConcurrentHashMap$Segment;
- 15: 85036 7332664 [Ljava.lang.Object;
- 16: 15559 6614824 <constantPoolCacheKlass>
- 17: 78919 6313520 java.lang.reflect.Method
- 18: 103377 4962096 com.sun.tools.javac.zip.ZipFileIndexEntry
- 19: 51998 4324096 [Ljava.util.HashMap$Entry;
- 20: 100613 4024520 java.util.concurrent.ConcurrentHashMap
- 21: 157136 3771264 java.util.concurrent.ConcurrentHashMap$HashEntry
- 22: 35932 3736928 com.asiainfo.dbm.core.bean.monitor.FlowService
- 23: 35932 3736928 com.asiainfo.dbm.core.bean.monitor.FlowService
七、jstat
最後要重點介紹下這個命令,這是jdk命令中比較重要,也是相當實用的一個命令,可以觀察到classloader,compiler,gc相關資訊。
具體引數如下:
-class:統計class loader行為資訊
-compile:統計編譯行為資訊
-gc:統計jdk gc時heap資訊
-gccapacity:統計不同的generations(不知道怎麼翻譯好,包括新生區,老年區,permanent區)相應的heap容量情況
-gccause:統計gc的情況,(同-gcutil)和引起gc的事件
-gcnew:統計gc時,新生代的情況
-gcnewcapacity:統計gc時,新生代heap容量
-gcold:統計gc時,老年區的情況
-gcoldcapacity:統計gc時,老年區heap容量
-gcpermcapacity:統計gc時,permanent區heap容量
-gcutil:統計gc時,heap情況
-printcompilation:不知道幹什麼的,一直沒用過。
一般比較常用的幾個引數是:
Java程式碼
- jstat -class 27629 3000 10 //每隔1秒監控一次,一共做10次
輸出內容含義如下:
Loaded | Bytes | Unloaded | Bytes | Time |
49955 | 49701.5 | 35528 | 32456.1 | 34.71 |
49955 | 49701.5 | 35528 | 32456.1 | 34.71 |
49955 | 49701.5 | 35528 | 32456.1 | 34.71 |
49955 | 49701.5 | 35528 | 32456.1 | 34.71 |
49963 | 49708.8 | 35528 | 32456.1 | 34.71 |
49963 | 49708.8 | 35528 | 32456.1 | 34.71 |
49963 | 49708.8 | 35528 | 32456.1 | 34.71 |
49971 | 49716.1 | 35528 | 32456.1 | 34.71 |
49971 | 49716.1 | 35528 | 32456.1 | 34.71 |
49971 | 49716.1 | 35528 | 32456.1 | 34.71 |
jstat -gc 2083 2000 20(每隔2秒監控一次,共做10)
輸出內容含義如下:
S0C | Current survivor(存活的) space 0 capacity (KB). |
EC | Current eden space capacity (KB). |
EU | Eden space utilization (KB). |
OC | Current old space capacity (KB). |
OU | Old space utilization (KB). |
PC | Current permanent space capacity (KB). |
PU | Permanent space utilization (KB). |
YGC | Number of young generation GC Events. |
YGCT | Young generation garbage collection time. |
FGC | Number of full GC events. |
FGCT | Full garbage collection time. |
GCT | Total garbage collection time. |
監控記憶體使用情況 引數 (檢視記憶體溢位相對有用)
jstat -gccause 2083 5000 (每隔5秒監控一次)
輸出內容含義如下:
S0 | Survivor space 0 utilization as a percentage of the space's current capacity. |
S1 | Survivor space 1 utilization as a percentage of the space's current capacity. |
E | Eden space utilization as a percentage of the space's current capacity. |
O | Old space utilization as a percentage of the space's current capacity. |
P | Permanent space utilization as a percentage of the space's current capacity. |
YGC | Number of young generation GC events. |
YGCT | Young generation garbage collection time. |
FGC | Number of full GC events. |
FGCT | Full garbage collection time. |
GCT | Total garbage collection time. |
LGCC | Cause of last Garbage Collection. |
GCC | Cause of current Garbage Collection. |
八、jvisualvm
java visualvm 是visualvm的一個針對java vm的釋出版本。 關於visualvm的更多資訊可以訪問 visualvm.java.net.jvisualvm 工具從jdk 6 update7 (apple的java 是從 mac os x 10.5 update 4)之後,預設就已經存在jdk工具裡。
java visualvm是一個穩定的工具,用每一個jdk釋出版本測試過。 最新的jdk請到oracle(sun)公司的網上進行下載。
jvisualvm 的功能及ui比jconsole還要強大。我們先來看下jvisualvm的用法。 他是一個gui(圖形介面)的工具,所以上手應該會很快。
官網上關於jvisualvm的用法介紹 http://docs.oracle.com/javase/6/docs/technotes/tools/share/jvisualvm.html
簡單來說,我們不需要傳遞任何引數就可以啟動jvisualvm。
我們可以把jvisualvm也放到jdk的path裡, 然後加到環境的path裡。 這時候我們在windows的執行或者cmd裡執行
jvisualvm就可以啟動該工具了。 或者我們直接雙擊點選該軟體
在cmd中輸入命令:jvisualvm 彈出下圖
具體用法可以參考下面這個連結:http://www.iteye.com/topic/516447
下面我們來講解如何利用visualvm對遠端的主機進行監控
首先,我們可以在使用者目錄下的任何地方(比如說:使用者根目錄,或者是jdk根目錄)新建一個名稱為jstatd.all.policy的檔案,檔案內容如下:
Java程式碼
- grant codebase "file:${java.home}/../lib/tools.jar" {
- permission java.security.AllPermission;
- };
新建完檔案後,我們給這個檔案賦予執行許可權,命令如下:
Java程式碼
- chmod 755 jstatd.all.policy
然後,我們在我們執行如下命令,啟動jstatd服務(jstatd服務的預設埠為1099):
Java程式碼
- jstatd -J-Djava.security.policy=/sw/bes/jstatd.all.policy
記住jstatd.all.policy檔案必須為絕對路徑,防止出現java.security.AccessControlException: access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write)錯誤。
最後,我們可以用jps命令檢視是否啟動成功:
Java程式碼
- jps -l
得到如下結果:
- 9481 com.bes.enterprise.ee.nodeagent.NodeAgentMain
- 7329 com.bes.enterprise.server.Entry
- 18968 com.bes.enterprise.server.Entry
- 15802 sun.tools.jstatd.Jstatd
- 16075 sun.tools.jps.Jps
- 9328 com.bes.enterprise.server.Entry
相關推薦
Java自帶的效能監測工具用法簡介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm
一、jstatd啟動jvm監控服務。它是一個基於rmi的應用,向遠端機器提供本機jvm應用程式的資訊。預設埠1099。 例項:jstatd -J-Djava.security.policy=my.policymy.policy檔案需要自己建立,內如如下: Java程式碼 grant codeb
Java自帶的效能監測工具用法簡介
https://blog.csdn.net/xad707348125/article/details/51985854 https://www.cnblogs.com/yjd_hycf_space/p/7755633.html http://www.cnblogs.com/alipayhut
Perfmon - Windows 自帶系統監測工具(轉)
跟蹤 存取 內存使用情況 ota 點擊 for 等等 order 服務 本文轉自:http://blog.csdn.net/oscar999/article/details/7918385 一、 簡述 可以用於監視CPU使用率、內存使用率、硬盤讀寫速度、網絡速度等。 Per
Perfmon - Windows 自帶系統監測工具
distrib 圖形 bytes 文本文 space 所有 mit lan network 一、 簡述 可以用於監視CPU使用率、內存使用率、硬盤讀寫速度、網絡速度等。 Perfmon提供了圖表化的系統性能實時監視器、性能日誌和警報管理,系統的性能日誌可定義為二進制文件、文
JVM自帶效能分析工具介紹——jstack
轉載: https://blog.csdn.net/Roy_70/article/details/78021551 前言 JDK本身提供了很多方便的JVM效能調優監控工具,除了整合式的VisualVM和jConsole外,還有jps、jstack、jmap、jhat、jstat、h
Java虛擬機器效能監測工具Visual VM與OQL
1.Visual VM多合一工具 Visual VM是一個功能強大的多合一故障診斷和效能監控的視覺化工具,它集成了多種效能統計工具的功能,使用 Visual VM 可以代替jstat、jmap、jhat、jstack甚至是JConsole。在JDK 6 Update 7以後,Visual Vm便作為JDK的一
JVM自帶效能分析工具介紹——jstat
前言 JDK本身提供了很多方便的JVM效能調優監控工具,除了整合式的VisualVM和jConsole外,還有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,每一種工具都有其自身的特點,使用者可以根據你需要檢測的應用或者程式片段的
Java自帶的GUI效能監控工具Jconsole以及JisualVM簡介
1 Jconsole 1.1 簡介以及連線 JConsole是一個基於JMX的GUI工具,用於連線正在執行的JVM,它是Java自帶的簡單效能監控工具。下面以對tomcat的監控為例,帶領大家熟悉Jconsole這個工具。 Step 1,在dos/bash命
java自帶視覺化效能監控工具jconsole
1. 前言 想驗證你對 jvm 配的一些調優引數(比如 Xms、Xmx 等)有沒有起作用嗎? 想不想實時監控你自定義的執行緒池的在實際執行時的執行緒個數、有沒有死鎖? 應用出現 java.lang.OutOfMemoryError: Java heap space,你知
利用java自帶工具jconsole監控虛擬機器
首先編輯tomcat/bin/catalina.sh 加入以下配置 (在 cygwin=false 上面加入) CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.
Widows自帶系統監控工具——24小時監控伺服器效能
操作步驟 1、執行程式perfmon.exe 2、選擇【使用者自定義】-【新建】-【資料收集器集】 3、自定義名稱“test”,選擇【手動建立】,然後【下一步】 4、選擇“效能計數器”,【下一步】 5、使用者可以根據具體情況,選擇多長時間記錄一次,然後點選
Java自帶常用工具
1.jps–列出java程序,類似於ps命令–引數-q可以指定jps只輸出程序ID ,不輸出類的短名稱–引數-m可以用於輸出傳遞給Java程序(主函式)的引數–引數-l可以用於輸出主函式的完整路徑–引數-v可以顯示傳遞給JVM的引數2.jinfo檢視JVM引數修改簡單的引數3
JVM效能調優監控工具專題一:JVM自帶效能調優工具
前提概要: JDK本身提供了很多方便的JVM效能調優監控工具,除了整合式的VisualVM和jConsole外,還有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,每一種工具都有其自身的特點,使用者可以根據你需要檢測的應用或者程式片段的狀況,適
使用java 自帶的webservice
sim 同名 文件 return 自己 cor 自定義 rgs poi 1:具有功能的類的寫法---發布服務 @WebService public class CarFactory { public String car(String num){
【java】java自帶的java.util.logging.Logger日誌功能
lena mat logs pre 默認 closed custom err ole 偶然翻閱到一篇文章,註意到Java自帶的Logger日誌功能,特地來細細的看一看,記錄一下。 1.Java自帶的日誌功能,默認的配置 ①Logger的默認配置,位置在JRE安裝目錄下l
java自帶消費
mes sage exception 信息 args class ise bsp isempty package com.csf.myproject.core; import java.util.concurrent.BlockingQueue; import java
Java 自帶的加密類MessageDigest類(加密MD5和SHA)
turn md4 格式化 字節轉換 查看 new word 用戶名 trac Java 自帶的數據加密類MessageDigest(MD5或SHA加密)說明:在網站中,為了保護網站會員的用戶名和密碼等隱私信息,所以我們在用戶註冊時就直接進行MD5方式或其他方式進行加密,
C# 利用VS自帶的WSDL工具生成WebService服務類
web 路徑 引用 src cnblogs logs png program 菜單 WebService有兩種使用方式,一種是直接通過添加服務引用,另一種則是通過WSDL生成。 添加服務引用大家基本都用過,這裏就不講解了。 那麽,既然有直接引用的方式,為什麽還要通過WSDL
基於java自帶連結串列結構實現迴圈連結串列
背景 有些場景下,需要迴圈連結串列,如某些狀態是從一個到下一個,最後再回到開始。此種情況下,可以採用迴圈連結串列來實現。 程式碼 package com.cxyzy.tencentfacerec; import java.util.Iterator; import java.u
火狐瀏覽器自帶介面測試工具HttpRequester使用方法
前言: HttpRequester介面測試工具作為一個十分好用的後臺介面測試工具,它讓程式設計師擺脫了依靠前端介面獲取引數的瓶頸。提高了後臺開發的工作效率,對於改錯和優化具有不可忽視的作用。 一、json資料提交測試方法 操作步驟: 1.在URL裡面填寫介面路徑。 2.點選Conten