linux查看java堆棧信息_linux進程堆棧大小
1、查看JAVA進程JVM參數
jinfo -flags pid(進程號)
-XX:CICompilerCount=2 最大的并行編譯數
-XX:InitialHeapSize=16777216 JVM 的初始堆內存大小
-XX:MaxHeapSize=257949696 JVM 的最大堆內存大小
-XX:MaxNewSize=85983232
-XX:MinHeapDeltaBytes=196608
-XX:NewSize=5570560
-XX:OldSize=11206656
2、JVM 查看當前Java進程的啟動參數
jmap -heap [進程號]
NewRatio: 指定老年代/新生代的堆內存比例,默認2:1。在hotspot虛擬機中,堆內存 = 新生代 + 老年代。在設置了-XX:MaxNewSize的情況下,-XX:NewRatio的值會被忽略,老年代的內存=堆內存 - 新生代內存。老年代的最大內存 = 堆內存 - 新生代 最大內存。
SurvivorRatio: 新生代中1個Eden區與1個Survivor區的大小比值。在hotspot虛擬機中,新生代 = 1個Eden + 2個Survivor。如果新生代內存是10M,SurvivorRatio=8,那么Eden區占8M,2個Survivor區各占1M。
Eden區是一塊,Survivor區是兩塊。
Eden區和Survivor區的比例是8:1:1
JVM內存的結構為
堆:存放對象
棧:運行時存放棧幀
程序計數器
方法區:存放類和常量
Jdk 1.8之后好像取消了方法區,直接將永久代放到了本地內存里面
3、Jstat可以用來監視VM內存內的各種堆和非堆的大小及其內存使用量。
jstat -gcutil pid
通過 jstat -gcutil pid 命令,我們可以對gc信息進行統計。
jstat -gc pid
這個命令看起來顯示的信息比上一個命令還多。jstat -gc pid 可以顯示gc的信息,查看gc的次數,及時間。其中最后五項,分別是young gc的次數,young gc的時間,full gc的次數,full gc的時間,gc的總時間。
jstat -gccapacity pid
jstat -gccapacity pid 命令可以顯示:VM內存中三代(young,old,perm)對象的使用和占用大小。如:PGCMN顯示的是最小perm的內存使用量,PGCMX顯示的是perm的內存最大使用量,PGC是當前新生成的perm內存占用量,PC是但前perm內存占用量。其他的可以根據這個類推, OC是old內純的占用量。
jstat -gcnew pid
jstat -gcnew pid 命令可以顯示年輕代對象的信息。
jstat -gcnewcapacity pid
jstat -gcnewcapacity pid 命令可以顯示年輕代對象的信息及其占用量。
jstat -gcold pid
jstat -gcold pid 命令可以顯示old代對象的信息。
jstat -gcoldcapacity pid
jstat -gcoldcapacity pid 命令可以顯示old代對象的信息及其占用量。
jstat -class pid
jstat -class pid 命令可以顯示加載class的數量,及所占空間等信息。
jstat -compiler pid
jstat -compiler pid 命令可以顯示VM實時編譯的數量等信息。
jstat -printcompilation pid
jstat -printcompilation pid 命令可以顯示當前VM執行的信息。
參數解釋
S0C:年輕代中第一個survivor(幸存區)的容量 (kb)
S1C:年輕代中第二個survivor(幸存區)的容量 (kb)
S0U:年輕代中第一個survivor(幸存區)目前已使用空間 (kb)
S1U:年輕代中第二個survivor(幸存區)目前已使用空間 (kb)
EC:年輕代中Eden(伊甸園)的容量 (kb)
EU:年輕代中Eden(伊甸園)目前已使用空間 (kb)
OC:Old代的容量 (kb)
OU:Old代目前已使用空間 (kb)
PC:Perm(持久代)的容量 (kb)
PU:Perm(持久代)目前已使用空間 (kb)
YGC:從應用程序啟動到采樣時年輕代中gc次數
YGCT:從應用程序啟動到采樣時年輕代中gc所用時間(s)
FGC:從應用程序啟動到采樣時old代(全gc)gc次數
FGCT:從應用程序啟動到采樣時old代(全gc)gc所用時間(s)
GCT:從應用程序啟動到采樣時gc用的總時間(s)
NGCMN:年輕代(young)中初始化(最小)的大小 (kb)
NGCMX:年輕代(young)的最大容量 (kb)
NGC:年輕代(young)中當前的容量 (kb)
OGCMN:old代中初始化(最小)的大小 (kb)
OGCMX:old代的最大容量 (kb)
OGC:old代當前新生成的容量 (kb)
PGCMN:perm代中初始化(最小)的大小 (kb)
PGCMX:perm代的最大容量 (kb)
PGC:perm代當前新生成的容量 (kb)
S0:年輕代中第一個survivor(幸存區)已使用的占當前容量百分比
S1:年輕代中第二個survivor(幸存區)已使用的占當前容量百分比
E:年輕代中Eden(伊甸園)已使用的占當前容量百分比
O:old代已使用的占當前容量百分比
P:perm代已使用的占當前容量百分比
S0CMX:年輕代中第一個survivor(幸存區)的最大容量 (kb)
S1CMX :年輕代中第二個survivor(幸存區)的最大容量 (kb)
ECMX:年輕代中Eden(伊甸園)的最大容量 (kb)
DSS:當前需要survivor(幸存區)的容量 (kb)(Eden區已滿)
TT: 持有次數限制
MTT : 最大持有次數限制
4、命令jmap是一個多功能的命令。它可以生成 java 程序的 dump 文件, 也可以查看堆內對象示例的統計信息、查看 ClassLoader 的信息以及 finalizer 隊列。
jmap pid查看進程的內存映像信息,類似 Solaris pmap 命令。
jmap -heap pid顯示Java堆詳細信息
jmap -histo:live pid顯示堆中對象的統計信息
jmap -clstats pid 打印類加載器信息
jmap -finalizerinfo pid打印等待終結的對象信息
jmap -dump:format=b,file=heapdump.phrof pid生成堆轉儲快照dump文件
5、jinfo 是 JDK 自帶的命令,可以用來查看正在運行的 java 應用程序的擴展參數,包括Java System屬性和JVM命令行參數;也可以動態的修改正在運行的 JVM 一些參數。當系統崩潰時,jinfo可以從core文件里面知道崩潰的Java應用程序的配置信息
jinfo pid輸出當前 jvm 進程的全部參數和系統屬性
jinfo -flag name pid輸出對應名稱的參數
jinfo -flag [+|-]name pid開啟或者關閉對應名稱的參數
jinfo -flag name=value pid修改指定參數的值。
jinfo -flags pid輸出全部的參數
jinfo -sysprops pid輸出當前 jvm 進行的全部的系統屬性
本文來自博客園,作者:迷茫的小白,轉載請注明原文鏈接:http://www.rzrgm.cn/cloudHui/p/17076184.html

浙公網安備 33010602011771號