導航:首頁 > 編程語言 > javajvm監控

javajvm監控

發布時間:2023-02-05 08:10:50

Ⅰ 如何查看java虛擬機堆內存的參數值

請確保java_home/bin配置到path環境變數下,因為這些工具都在jdk的bin目錄下

jps(JVM Process Status Tool):JVM機進程狀況工具

用來查看基於HotSpot JVM裡面所有進程的具體狀態, 包括進程ID,進程啟動的路徑等等。與unix上的ps類似,用來顯示本地有許可權的java進程,可以查看本地運行著幾個java程序,並顯示他們的進程號。使用jps時,不需要傳遞進程號做為參數。
Jps也可以顯示遠程系統上的JAVA進程,這需要遠程服務上開啟了jstat服務,以及RMI注及服務,不過常用都是對本對的JAVA進程的查看。
命令格式:jps [ options ] [ hostid ]
常用參數說明:
-m 輸出傳遞給main方法的參數,如果是內嵌的JVM則輸出為null。
-l 輸出應用程序主類的完整包名,或者是應用程序JAR文件的完整路徑。
-v 輸出傳給JVM的參數。
例如:
C:\Users\Administrator>jps -lmv
1796 -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx512m -XX:MaxPermSize=256m
7340 sun.tools.jps.Jps -lmv -Denv.class.path=.;D:\DevTools\VM\jdk1.6.0_31\\lib\dt.jar;D:\DevTools\VM\jdk1.6.0_31\\lib\tools.jar; -Dapplication.home=D:\DevTools\VM\jdk1.6.0_31 -Xms8m
其中pid為1796的是我的eclipse進程,pid為7340的是jps命令本身的進程

jinfo(Configuration Info for Java):JVM配置信息工具

可以輸出並修改運行時的java 進程的opts。用處比較簡單,用於輸出JAVA系統參數及命令行參數
命令格式:jinfo [ options ] [ pid ]
常用參數說明:
-flag 輸出,修改,JVM命令行參數
例如:
C:\Users\Administrator>jinfo 1796
將會列印出很多jvm運行時參數信息,由於比較長這里不再列印出來,可以自己試試,內容一目瞭然

Jstack(Stack Trace for Java):JVM堆棧跟蹤工具
jstack用於列印出給定的java進程ID或core file或遠程調試服務的Java堆棧信息,如果是在64位機器上,需要指定選項"-J-d64「
命令格式:jstack [ option ] pid
常用參數說明:
-F 當』jstack [-l] pid』沒有相應的時候強制列印棧信息
-l 長列表. 列印關於鎖的附加信息,例如屬於java.util.concurrent的ownable synchronizers列表.
-m 列印java和native c/c++框架的所有棧信息.
-h | -help列印幫助信息
例如:
C:\Users\Administrator>jstack 1796
2013-05-22 11:42:38
Full thread mp Java HotSpot(TM) Client VM (20.6-b01 mixed mode):

"Worker-30" prio=6 tid=0x06514c00 nid=0x1018 in Object.wait() [0x056af000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked <0x1ad84a90> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)
......
......
......
......

jstat(JVM statistics Monitoriing Tool):JVM統計信息監視工具

對Java應用程序的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收狀況的監控
命令格式:jstat [ option pid [interval [ s | ms ] [count] ] ]
常用參數說明:
-gcutil 輸出已使用空間占總空間的百分比
-gccapacity 輸出堆中各個區域使用到的最大和最小空間
例如:每隔1秒監控jvm內存一次,共監控5次
C:\Users\Administrator>jstat -gccapacity 1796 1s 5
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC PGCMN PGCMX PGC PC YGC FGC
13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96
13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96
13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96
13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96
13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 97
C:\Users\Administrator>jstat -gcutil 1796 1s 5
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
一些術語的中文解釋:
S0C:年輕代中第一個survivor(倖存區)的容量 (位元組)
S1C:年輕代中第二個survivor(倖存區)的容量 (位元組)
S0U:年輕代中第一個survivor(倖存區)目前已使用空間 (位元組)
S1U:年輕代中第二個survivor(倖存區)目前已使用空間 (位元組)
EC:年輕代中Eden(伊甸園)的容量 (位元組)
EU:年輕代中Eden(伊甸園)目前已使用空間 (位元組)
OC:Old代的容量 (位元組)
OU:Old代目前已使用空間 (位元組)
PC:Perm(持久代)的容量 (位元組)
PU:Perm(持久代)目前已使用空間 (位元組)
YGC:從應用程序啟動到采樣時年輕代中gc次數
YGCT:從應用程序啟動到采樣時年輕代中gc所用時間(s)
FGC:從應用程序啟動到采樣時old代(全gc)gc次數
FGCT:從應用程序啟動到采樣時old代(全gc)gc所用時間(s)
GCT:從應用程序啟動到采樣時gc用的總時間(s)
NGCMN:年輕代(young)中初始化(最小)的大小 (位元組)
NGCMX:年輕代(young)的最大容量 (位元組)
NGC:年輕代(young)中當前的容量 (位元組)
OGCMN:old代中初始化(最小)的大小 (位元組)
OGCMX:old代的最大容量 (位元組)
OGC:old代當前新生成的容量 (位元組)
PGCMN:perm代中初始化(最小)的大小 (位元組)
PGCMX:perm代的最大容量 (位元組)
PGC:perm代當前新生成的容量 (位元組)
S0:年輕代中第一個survivor(倖存區)已使用的占當前容量百分比
S1:年輕代中第二個survivor(倖存區)已使用的占當前容量百分比
E:年輕代中Eden(伊甸園)已使用的占當前容量百分比
O:old代已使用的占當前容量百分比
P:perm代已使用的占當前容量百分比
S0CMX:年輕代中第一個survivor(倖存區)的最大容量 (位元組)
S1CMX :年輕代中第二個survivor(倖存區)的最大容量 (位元組)
ECMX:年輕代中Eden(伊甸園)的最大容量 (位元組)
DSS:當前需要survivor(倖存區)的容量 (位元組)(Eden區已滿)
TT: 持有次數限制
MTT : 最大持有次數限制

jmap( Memory Map for Java):JVM內存映像工具

列印出某個java進程(使用pid)內存內的所有『對象』的情況(如:產生那些對象,及其數量)
命令格式:jmap [ option ] pid
常用參數說明:
-mp:[live,]format=b,file=<filename> 使用二進制形式輸出jvm的heap內容到文件中, live子選項是可選的,假如指定live選項,那麼只輸出活的對象到文件.
-histo[:live] 列印每個class的實例數目,內存佔用,類全名信息. VM的內部類名字開頭會加上前綴」*」. 如果live子參數加上後,只統計活的對象數量.
-F 強迫.在pid沒有相應的時候使用-mp或者-histo參數. 在這個模式下,live子參數無效.
例如:以二進制形式輸入當前堆內存映像到文件data.hprof中
jmap -mp:live,format=b,file=data.hprof 1796
生成的文件可以使用jhat工具進行分析,在OOM(內存溢出)時,分析大對象,非常有用
通過使用如下參數啟動JVM,也可以獲取到mp文件:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=./java_pid<pid>.hprof
在jvm發生內存溢出時生成內存映像文件

jhat(JVM Heap Analysis Tool):JVM堆轉儲快照分析工具

用於對JAVA heap進行離線分析的工具,他可以對不同虛擬機中導出的heap信息文件進行分析,如linux上導出的文件可以拿到WINDOWS上進行分析,可以查找諸如內存方面的問題。
命令格式:jhat mpfile(jmap生成的文件)
例如:分析jmap導出的內存映像
jhat data.hprof
執行成功後,訪問http://localhost:7000即可查看內存信息,

MAT(Memory Analyzer Tool):一個基於Eclipse的內存分析工具

官網: http://www.eclipse.org/mat/
update:http://download.eclipse.org/mat/1.2/update-site/
這是eclipse的一個插件,安裝後可以打開xxx.hprof文件,進行分析,比jhat更方便使用,有些時候由於線上xxx.hprof文件過大,直接使用jhat進行初步分析了,可以的話拷貝到本地分析效果更佳。

圖形化監控工具:

在JDK安裝目錄bin下面有兩個可視化監控工具
1. JConsole(Java Monitoring and Management Console) 基於JMX的可視化管理工具。
2. VisualVM(All-in-one Java Troubleshooting Tool)隨JDK發布的最強大的運行監視和故障處理程序。
推薦使用VisualVM,他有很多插件,可以更方便的監控運行時JVM

Ⅱ 求《實戰Java虛擬機JVM故障診斷與性能優化第2版》全文免費下載百度網盤資源,謝謝~

《實戰Java虛擬機JVM故障診斷與性能優化第2版》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1JIn05G2ORgE1yWT23XUukg

?pwd=ppk1 提取碼: ppk1
簡介:不管技術如何發展,Java依然是一個充滿活力的生態圈,學習Java的人也越來越多,但多數人學習Java虛擬機(JVM)時都會遇到瓶頸。本書將通過200餘個示例詳細介紹JVM中的各種參數配置、故障排查、性能監控及性能優化,幫助Java人突破瓶頸。

Ⅲ 有什麼工具能監控java項目運行中,各個class,function,sql的執行效率,使用次數

JProfiler 能夠監測各個方法被調用的次數,總時間~

Ⅳ 深入理解Java虛擬機:JVM高級特性與最佳實踐的內容簡介

作為一位java程序員,你是否也曾經想深入理解java虛擬機,但是卻被它的復雜和深奧拒之門外?沒關系,《深入理解java虛擬機:jvm高級特性與最佳實踐》極盡化繁為簡之妙,能帶領你在輕松中領略java虛擬機的奧秘。《深入理解java虛擬機:jvm高級特性與最佳實踐》是近年來國內出版的唯一一本與java虛擬機相關的專著,也是唯一一本同時從核心理論和實際運用這兩個角度去探討java虛擬機的著作,不僅理論分析得透徹,而且書中包含的典型案例和最佳實踐也極具現實指導意義。
全書共分為五大部分。第一部分從宏觀的角度介紹了整個java技術體系的過去、現在和未來,以及如何獨立地編譯一個openjdk7,這對理解後面的內容很有幫助。第二部分講解了jvm的自動內存管理,包括虛擬機內存區域的劃分原理以及各種內存溢出異常產生的原因;常見的垃圾收集演算法以及垃圾收集器的特點和工作原理;常見的虛擬機的監控與調試工具的原理和使用方法。第三部分分析了虛擬機的執行子系統,包括class的文件結構以及如何存儲和訪問class中的數據;虛擬機的類創建機制以及類載入器的工作原理和它對虛擬機的意義;虛擬機位元組碼的執行引擎以及它在實行代碼時涉及的內存結構。第四部分講解了程序的編譯與代碼的優化,闡述了泛型、自動裝箱拆箱、條件編譯等語法糖的原理;講解了虛擬機的熱點探測方法、hotspot的即時編譯器、編譯觸發條件,以及如何從虛擬機外部觀察和分析jit編譯的數據和結果。第五部分探討了java實現高效並發的原理,包括jvm內存模型的結構和操作;原子性、可見性和有序性在java內存模型中的體現;先行發生原則的規則和使用;線程在java語言中的實現原理;虛擬機實現高效並發所做的一系列鎖優化措施。
《深入理解java虛擬機:jvm高級特性與最佳實踐》適合所有java程序員、系統調優師和系統架構師閱讀。

Ⅳ mp內存format b什麼意思

其中jmap是java自帶的工具查看整個JVM內存狀態jmap-heap[pid]要注意的是在使用CMSGC情況下,jmap-heap的執行有可能會導致JAVA進程掛起查看JVM堆中對象詳細佔用情況jmap-histo[pid]導出整個JVM中內存信息jmap-mp:format=b,file=文件名[pid]jhat是sun1.6及以上版本中自帶的一個用於分析JVM堆DUMP文件的工具,基於此工具可分析JVMHEAP中對象的內存佔用情況jhat-J-Xmx1024M[file]執行後等待console中輸入startHTTPserveronport7000即可使用瀏覽器訪問IP:提供的一個用於分析JVM堆Dump文件的插件。藉助這個插件可查看對象的內存佔用狀況,引用關系,分析內存泄露等。kill-3[pid]在Linux上找到Java所在的進程號,然後執行以上命令,線程的相關信息就輸出到consolejstackjstack是sunJDK自帶的工具,通過該工具可以看到JVM中線程的運行狀況,包括鎖等待,線程是否在運行執行jstack[pid],線程的所有堆棧信息"http-8080-10"daemonprio=10tid=x0a949bb60nid=0x884waitingformonitorentry[]"http-8080-10"這個線程處於等待狀態。waitingformonitorentry如果在連續幾次輸出線程堆棧信息都存在於同一個或多個線程上時,則說明系統中有鎖競爭激烈,死鎖,或鎖餓死的想像。「http-8080-11」daemonprio=10tix=xxxnid=xxxinobject.wait()[]java.lang.Thread.State:waiting(onobjectmonitor)該表示http-8080-11的線程處於對象的Wait上,等待其他線程的喚醒,這也是線程池的常見用法。「LowMemoryDetector」daemonprio=10tix=xxnid=xxxrunnable[]java.lang.Thread.State:runnable表示「LowMemoryDetector」的線程處於Runable狀態,等待獲取CPU的使用權.參考:/blog/static/100768914201242410583187/jvisualvm一.JavaVisualVM概述對於使用命令行遠程監控jvm太麻煩。在jdk1.6中Oracle提供了一個新的可視化的。JVM監控工具JavaVisualVM。jvisualvm.exe在JDK的bin目錄下。雙擊啟動JavaVisualVM後可以看到窗口左側「應用程序」欄中有「本地」、「遠程」、「快照」三個項目。「本地」下顯示的是在localhost運行的Java程序的資源佔用情況,如果本地有Java程序在運行的話啟動JavaVisualVM即可看到相應的程序名,點擊程序名打開相應的資源監控菜單,以圖形的形式列出程序所佔用的CPU、Heap、PermGen、類、線程的統計信息。「遠程」項下列出的遠程主機上的Java程序的資源佔用情況,但需要在遠程主機上運行jstatd守護程序VisualVM分為3類,本地它會自動偵測到,並顯示出來雙擊Local下的任一節點,看到右邊的變化,你可以監控CPU,內存,類,線程等運行狀況,實時監控伺服器性能。右鍵VisualVM我們可以看到ThreadDump,HeapDump做ThreadDump很快,馬上就可以看到結果HeapDump要稍花費一些時間(可以看到當前heap里對象的數量及佔用的比例,做OOM很好用)對其功能不再做描述,可以查閱網上相關質量,我們主要講的是如何使用VisualVM遠程監控。

Ⅵ 怎麼運用JMX遠程監控,管理JVM

如果你跑的就是一個簡單的Java程序:
1、假如跑在本地,只需要在運行程序是加上 -Dcom.sun.management.jmxremote
2、假如跑在遠程,則要加上-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=true
-----當然你還可以加其它配置,譬如用戶名和密碼-------

假設你的程序跑在容器(譬如說你提到的tomcat),那麼一定有個配置文件會讓你加上以上的這些配置,對tomcat來講,就是
CATALINA_HOME/bin目錄下的catalina.bat 或catalina.sh,在JAVA_OPTS那行中加上以上第二點的配置

簡單來講,加上這些配置,你的程序就可以使用JMX來監控,即你的程序向外部暴露了JMX介面。

Ⅶ java性能監視工具visualvm 出現 not supported for this jvm!

Random r=new Random();//創建一個新的隨機數生成器。
for (int i=0;i<a.length ;i++ ){//循環次數為a的長度
a[i]=1+r.nextInt(33);//從0(包含回)到33(不包含)之間生成隨機隨機數 然後+1即[1-33] 並賦給答a數組
}

如果對您有幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!

vaela

Ⅷ 如何jvm監控linux伺服器

如何配置visualvm監控
visualvm支持在Linux和windows上啟用圖形界面監控jvm的資源,但是如何可以使我們在windows上監控到遠程linux伺服器資源,這還需要做一些配置,此文是在原文基礎上做了更改的,希望對大家能有所幫助。
(1)首先要修改JDK中JMX服務的配置文件,以獲得相應的許可權:
進入$JAVA_HOME所在的根目錄的/jre/lib/management子目錄下,
a. 將jmxremote.password.template文件復制為jmxremote.password
b. 調整jmxremote.access和jmxremote.password的許可權為只讀寫,可以使用如下命令
chmod 600 jmxremote.access jmxremote.password
c. 打開jmxremote.password文件,去掉
# monitorRole QED
# controlRole R&D
這兩行前面的注釋符號
(2)修改env.sh
打開env.sh文件,並在JVM的啟動配置中添加如下信息:
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.20.150.218 其他配置」
這幾個配置的說明如下:
-Dcom.sun.management.jmxremote.port:這個是配置遠程connection的埠號的,要確定這個埠沒有被佔用
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false:這兩個是固定配置,是JMX的遠程服務許可權的
-Djava.rmi.server.hostname:這個是配置server的IP的,要使用server的IP最好在機器上先用hostname –i看一下IP是不是機器本身的IP,如果是127.0.0.1的話要改一下,否則遠程的時候連不上,目前我們的server上我已經都改好了
(3)Windows客戶端配置
JDK 1.6版本自帶visualvm,只需要進到bin目錄下啟動即可
啟動後頁面比較簡潔,配置也很簡單:
a. 點擊左側菜單的add Remote host,輸入server的IP,然後再advanced settings里配置埠(注意這個埠要和server上的埠一致)
b. 右擊剛才配置的IP,選擇JMX connection方式,再次輸入埠,就可以監視到JVM資源了

Ⅸ JVM常用調試工具介紹

一、Linux ps (英文全拼:process status)命令用於顯示當前進程的狀態

ps aux 基本輸出

ps aux 列名解釋

註:優化機器資源主要從佔用機器cpu和mem高的程序入手

二、Linux top命令查看正在運行的進程和系統負載信息,包括cpu負載、內存使用、各個進程所佔系統資源等

基本輸出

欄位解釋

三、Linux top -H -p pid。查看某個進程內部線程佔用情況

四、jps(Java Virtual Machine Process Status Tool) 是java提供的一個顯示當前所有java進程pid的命令

五、jinfo LVMID。可以用來查看 Java 進程運行的 JVM 參數

六、jstat(Java Virtual Machine statistics monitoring tool)主要利用JVM內建的指令對Java應用程序的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收狀況的監控。可見,Jstat是輕量級的、專門針對JVM的工具,非常適用

七、jstack(Java Stack Trace Tool)主要用於生成java虛擬機當前時刻的線程快照。線程快照是當前java虛擬機內每一條線程正在執行的方法堆棧的集合,生成線程快照的主要目的是定位線程出現長時間停頓的原因,如線程間死鎖、死循環、請求外部資源導致的長時間等待等。 線程出現停頓的時候通過jstack來查看各個線程的調用堆棧,就可以知道沒有響應的線程到底在後台做什麼事情,或者等待什麼資源

八、jmap命令(Java Memory Map)是其中之一。主要用於列印指定Java進程(或核心文件、遠程調試伺服器)的共享對象內存映射或堆內存細節

九、MAT(Memory Analysis Tools)是一個分析 Java堆數據的專業工具,用它可以定位內存泄漏的原因

此次分享准備過程中,發現JDK調試工具在Root用戶下訪問Yarn用戶啟動的Java虛擬機,獲取不到信息,jstatck獲取到的還不全(沒有線程描述信息行)
可以使用 sudo -u yarn /usr/java/jdk1.8.0_181-cloudera/bin/jstack 這種方式獲取。

閱讀全文

與javajvm監控相關的資料

熱點內容
c語言12位的數據應該怎麼存儲 瀏覽:953
將ape導入iphone 瀏覽:107
js組合快捷鍵 瀏覽:174
linux系統盤默認掛在的文件夾 瀏覽:667
淘寶數據包如何操作上架 瀏覽:567
vb編程中輸入cls是什麼意思 瀏覽:81
linuxtime服務 瀏覽:184
瘋狂安卓講義第二版代碼 瀏覽:420
老炮兒三小時版本下載 瀏覽:313
matlab怎麼調試程序 瀏覽:2
winxp升級win7的危害 瀏覽:496
網路沒連上卻不可用是怎麼回事 瀏覽:752
社區版本 瀏覽:738
怎麼查微信公眾號什麼時候開通的 瀏覽:717
安裝三菱編程閃退怎麼回事 瀏覽:488
手機怎麼創建word文件格式 瀏覽:694
c語言連接資料庫 瀏覽:887
數據線粉色和白色哪個是正 瀏覽:775
vb編程應注意什麼 瀏覽:855
js循環添加控制項 瀏覽:615

友情鏈接