java虛擬機內存監控_java虛擬機內存監控工具jps,jinfo,Jstack,jstat,jmap,jhat使用...

將會打印出很多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打印幫助信息

例如:

Cmd命令行代碼 ?8f3d0bb57e5c43db75b17bb32dcb4bf5.png

C:\Users\Administrator>jstack?1796

2013-05-22?11:42:38

Full?thread?dump?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次

Cmd命令行代碼 ?8f3d0bb57e5c43db75b17bb32dcb4bf5.png

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

Cmd命令行代碼 ?8f3d0bb57e5c43db75b17bb32dcb4bf5.png

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

常用參數說明:

-dump:[live,]format=b,file=?使用二進制形式輸出jvm的heap內容到文件中,?live子選項是可選的,假如指定live選項,那么只輸出活的對象到文件.

-histo[:live]?打印每個class的實例數目,內存占用,類全名信息.?VM的內部類名字開頭會加上前綴”*”.?如果live子參數加上后,只統計活的對象數量.

-F?強迫.在pid沒有相應的時候使用-dump或者-histo參數.?在這個模式下,live子參數無效.

例如:以二進制形式輸入當前堆內存映像到文件data.hprof中

Cmd命令行代碼 ?8f3d0bb57e5c43db75b17bb32dcb4bf5.png

jmap?-dump:live,format=b,file=data.hprof?1796

生成的文件可以使用jhat工具進行分析,在OOM(內存溢出)時,分析大對象,非常有用

通過使用如下參數啟動JVM,也可以獲取到dump文件:

-XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=./java_pid.hprof

在jvm發生內存溢出時生成內存映像文件

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

用于對JAVA?heap進行離線分析的工具,他可以對不同虛擬機中導出的heap信息文件進行分析,如LINUX上導出的文件可以拿到WINDOWS上進行分析,可以查找諸如內存方面的問題。

命令格式:jhat dumpfile(jmap生成的文件)

例如:分析jmap導出的內存映像

Cmd命令行代碼 ?8f3d0bb57e5c43db75b17bb32dcb4bf5.png

jhat?data.hprof

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

這是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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530316.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530316.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530316.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

idea 調試java技巧_IDEA 調試Java代碼的兩個技巧

本文介紹兩個使用IDEA 調試Java代碼的兩個技巧&#xff1a;修改變量值使用RuntimeException終止代碼執行修改變量值在Java代碼調試過程中&#xff0c;我們可以修改變量值&#xff0c;使其達到走指定分支的目的&#xff0c;或者使其滿足某個條件。我們以給變量beanName賦值為例&…

java 10進制轉 000x_java 如何把 00 轉換成 0x00 或者 10 轉換成 0x10

public static void main(String[] args) {String s "00000018A0010098C68E00989A690000000000BC614E000055AA55AA";System.out.println(s);byte[] b HexString2Bytes(s);System.out.println(Bytes2HexString(b));}/*** 將指定byte數組以16進制的形式打印到控制臺*…

java免檢異常_java-異常

java提供了異常處理機制&#xff1a;程序運行受阻時候的處理方式。1、異常分類Error&#xff1a;系統錯誤&#xff0c;由java虛擬機拋出&#xff0c;很少發生&#xff1b;免檢異常RuntimeException&#xff1a;程序設計錯誤&#xff0c;通常由java虛擬機拋出&#xff1b;免檢異…

java編程需要數學知識嗎_初學Java編程,需要英語和數學基礎嗎?

原標題&#xff1a;初學Java編程&#xff0c;需要英語和數學基礎嗎&#xff1f;“學習Java編程英語和數學是必備條件嗎&#xff1f;”很多Java零基礎學習或者轉型IT行業的都會有這樣的疑問&#xff0c;其實剛開始學習Java編程是不需要太高深的數學和英語基礎的。剛開始學習Java…

java map put報錯_java 集合(Map)

-------------------|Map 儲存的數據都是以鍵值對的形式&#xff0c;鍵不可重復&#xff0c;值可重復。----------------------------| HashMap----------------------------| TreeMap----------------------------| HashTableMap接口的方法&#xff1a;添加&#xff1a;put(K…

java簡單數據結構_圖解Java常用數據結構

最近在整理數據結構方面的知識, 系統化看了下 Java 中常用數據結構, 突發奇想用動畫來繪制數據流轉過程.主要基于 jdk8, 可能會有些特性與 jdk7 之前不相同, 例如 LinkedList LinkedHashMap 中的雙向列表不再是回環的.HashMap 中的單鏈表是尾插, 而不是頭插入等等, 后文不再贅敘…

jest java_?使用jest進行測試驅動開發

前言本文將使用jest進行測試驅動開發的示例&#xff0c;源碼在github。重點說明在開發中引入單元測試后開發過程&#xff0c;以及測試先行的開發思路。本文的重點是過程以及思維方法&#xff0c;框架以及用法不是重點。本文使用的編程語言是javascript&#xff0c;思路對其他語…

mysql sqlstate 08001_關于Toad連接DB2的sqlstate=08001錯誤

新裝的centos6.3db29.7&#xff0c;數據庫導入完了的之后用Toad連接訪問之的時候出錯了。DB2 Database Error: ERROR [08001] [IBM] SQL30081N A communication error has been detected. Communication protocol being used: "TCP/IP". Communication API being use…

mysql 設置主鍵命令_MySQL常用命令

1、修改MySQL密碼方法一&#xff1a;use mysql&#xff1b;update user set passwordPASSWORD(“123456”) where user‘root’&#xff1b;flush privileges&#xff1b;忘記密碼&#xff1a;sed -ri 3d skip-grant-tables /etc/my.cnfsystemctl restart mariadbuse mysql&…

python 整除的數組_計算和可被整除的所有子數組

在我學習面試的時候&#xff0c;我在GeeksForGeeks上找到了這個問題和解決方案&#xff0c;但不明白答案。在上面說的是Let there be a subarray (i, j) whose sum is divisible by ksum(i, j) sum(0, j) - sum(0, i-1)Sum for any subarray can be written as q*k rem where…

java ha_java – Haproxy Bad Gateway 502

所以我在Jetty servlet面前使用HAProxy.目前的目標只是在配置完所有內容后進行概念驗證,加載和壓力測試.但是我在配置haproxy時遇到問題.我知道這不是我的應用程序的問題,因為我有運行nginx(tengine),一切正常.所以它必須與haproxy配置或haproxy工作的方式不適合我的需要.所以我…

java ioutils_java – 無法解析符號’IOUtils’

我使用以下代碼在我的Android應用程序中創建一個臨時文件&#xff1a;public File streamToFile (InputStream in) throws IOException {File tempFile File.createTempFile("sample", ".tmp");tempFile.deleteOnExit();FileOutputStream out new FileOu…

java const關鍵字_const關鍵字:終于擁有真正的常量聲明語句

你好&#xff0c;今天大叔想和你嘮扯嘮扯 ES6 新增的關鍵字 —— const。在說 const 關鍵字之前&#xff0c;大叔先和你嘮嘮大叔自己對 const 的感受 —— JavaScript 尼瑪終于可以聲明真正的常量啦&#xff01;大叔為啥會發出這樣滴感嘆&#xff1f;實在是“天下苦秦久矣”呀~…

workerman高并發異步mysql_workerman怎么實現高并發

并發概念太模糊&#xff0c;這里以兩種可以量化的指標并發連接數和并發請求數來說明。并發連接數是指服務器當前時刻一共維持了多少TCP連接&#xff0c;而這些連接上是否有數據通訊并不關注。 (推薦學習&#xff1a; workerman教程)例如一臺消息推送服務器上可能維持了百萬的設…

checkout 撤銷修改_Git的4個階段的撤銷更改

雖然git誕生距今已有12年之久&#xff0c;網上各種關于git的介紹文章數不勝數&#xff0c;但是依然有很多人(包括我自己在內)對于它的功能不能完全掌握。以下的介紹只是基于我個人對于git的理解&#xff0c;并且可能生編硬造了一些不完全符合git說法的詞語。目的只是為了讓git通…

移除Java對象中的屬性_在java對象中添加和刪除屬性

我怎樣才能在 java中實現這一點.我有一個具有屬性的對象.public class Object {private final Credentials Credentials;private final int PageSize;private final int PageStart;private final int DefaultFilterId;public Object(Credentials Credentials, int PageSize, in…

java軟件開發ea介紹_開發說明 — Eacloud 1.0 documentation

PHP 代碼示例( Linux 版)解壓后&#xff0c;參考 phplinux/v3.4.0.1/文檔/PHP版服務器端工具包(Linux版)軟件使用手冊.pdfDemo 運行1.安裝對應版本的 PHP2.安裝運行時環境(glibc 庫等)3.修改 PHP 的配置文件 php.ini修改 php.ini&#xff0c;使 php 允許加載擴展&#xff0c;并…

java中operationBox_Java使用PDFBox開發包實現對PDF文檔內容編輯與保存

pdfbox開發包下載地址&#xff1a;http://pdfbox.apache.org/程序實現了PDF文檔的創建&#xff0c;讀入&#xff0c;與修改PDF內容并保存。可能有個前提&#xff0c;PDF文檔不是加密的&#xff0c;如果加密怎么辦&#xff0c;我沒研究過&#xff01;源代碼如下&#xff1a;pack…

java訪問權限最高_java 訪問權限

Java語言中的訪問權限修飾符有4種&#xff0c;但是僅有3個關鍵字&#xff0c;因為不寫訪問權限&#xff0c;在Java中被稱為默認權限&#xff0c;或同包權限&#xff0c;本文中以(default)代替。下面按照權限從小到大的順序對4中訪問權限分別介紹。class我個人&#xff0c;我有很…

java中 queryparam_java – 何時使用@QueryParam和@PathParam

我不是問這里已經問過的問題&#xff1a;What is the difference between PathParam and QueryParam這是一個“最佳實踐”或常規問題。什么時候使用PathParam和QueryParam。我可以想到的是&#xff0c;決定可能使用兩者來區分信息模式。讓我在下面說明我的LTPO – 不完美的觀察…