日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java内存使用情况查看工具

發(fā)布時間:2024/1/17 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java内存使用情况查看工具 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Java通過jvm自己管理內(nèi)存,同時Java提供了一些命令行工具,用于查看內(nèi)存使用情況。
這里主要介紹一下jstat、jmap命令以及相關(guān)工具。


一、jstat查看?gc實時執(zhí)行情況 jstat命令命令格式: jstat [Options] vmid [interval] [count]
命令參數(shù)說明: Options,一般使用?-gcutil???-gc?查看gc?情況 pid,當(dāng)前運(yùn)行的?java進(jìn)程號?
interval,間隔時間,單位為秒或者毫秒?
count,打印次數(shù),如果缺省則打印無數(shù)次
Options?參數(shù)如下: -gc:統(tǒng)計?jdk gc?heap信息,以使用空間字節(jié)數(shù)表示 -gcutil:統(tǒng)計?gc時,?heap情況,以使用空間的百分比表示 -class:統(tǒng)計?class loader行為信息 -compile:統(tǒng)計編譯行為信息 -gccapacity:統(tǒng)計不同?generations(新生代,老年代,持久代)的?heap容量情況 -gccause:統(tǒng)計引起?gc的事件 -gcnew:統(tǒng)計?gc時,新生代的情況 -gcnewcapacity:統(tǒng)計?gc時,新生代?heap容量 -gcold:統(tǒng)計?gc時,老年代的情況 -gcoldcapacity:統(tǒng)計?gc時,老年代?heap容量 -gcpermcapacity:統(tǒng)計?gc時,?permanent區(qū)?heap容量
示例? ? $?jstat -gc 12538 5000 5?秒一次顯示進(jìn)程號為?12538?java進(jìn)成的?GC情況,結(jié)果如下圖:

結(jié)果說明
標(biāo)志說明
S0C年輕代中第一個survivor區(qū)的容量 (字節(jié))
S1C年輕代中第二個survivor區(qū)的容量 (字節(jié))
S0U年輕代中第一個survivor區(qū)目前已使用空間 (字節(jié))
S1U年輕代中第二個survivor區(qū)目前已使用空間 (字節(jié))
EC年輕代中Eden的容量 (字節(jié))
EU年輕代中Eden目前已使用空間 (字節(jié))
OCOld代的容量 (字節(jié))
OUOld代目前已使用空間 (字節(jié))
PCPerm(持久代)的容量 (字節(jié))
PUPerm(持久代)目前已使用空間 (字節(jié))
YGC從應(yīng)用程序啟動到采樣時年輕代中g(shù)c次數(shù)
YGCT從應(yīng)用程序啟動到采樣時年輕代中g(shù)c所用時間(s)
FGC從應(yīng)用程序啟動到采樣時old代(全gc)gc次數(shù)
FGCT從應(yīng)用程序啟動到采樣時old代(全gc)gc所用時間(s)
GCT從應(yīng)用程序啟動到采樣時gc用的總時間(s)
NGCMN年輕代(young)中初始化(最小)的大小 (字節(jié))
NGCMX年輕代(young)的最大容量 (字節(jié))
NGC年輕代(young)中當(dāng)前的容量 (字節(jié))
OGCMNold代中初始化(最小)的大小 (字節(jié))
OGCMXold代的最大容量 (字節(jié))
OGCold代當(dāng)前新生成的容量 (字節(jié))
PGCMNperm代中初始化(最小)的大小 (字節(jié))
PGCMXperm代的最大容量 (字節(jié))??
PGCperm代當(dāng)前新生成的容量 (字節(jié))
S0年輕代中第一個survivor區(qū)已使用的占當(dāng)前容量百分比
S1年輕代中第二個survivor區(qū)已使用的占當(dāng)前容量百分比
E年輕代中Eden已使用的占當(dāng)前容量百分比
Oold代已使用的占當(dāng)前容量百分比
Pperm代已使用的占當(dāng)前容量百分比
S0CMX年輕代中第一個survivor區(qū)的最大容量 (字節(jié))
S1CMX年輕代中第二個survivor區(qū)的最大容量 (字節(jié))
ECMX年輕代中Eden的最大容量 (字節(jié))
DSS當(dāng)前需要survivor區(qū)的容量 (字節(jié))(Eden區(qū)已滿)
TT持有次數(shù)限制
MTT最大持有次數(shù)限制


jstatd?啟動jvm?監(jiān)控服務(wù) 它是一個基于?rmi的應(yīng)用,向遠(yuǎn)程機(jī)器提供本機(jī)?jvm應(yīng)用程序的信息。默認(rèn)端口?1099 ? $ jstatd -J-Djava.security.policy=my.policy
my.policy文件需要自己建立,是安全策略文件,因為?jdk?jvm做了?jaas的安全檢測,所以我們必須設(shè)置一些策略,使?jstatd被允許作網(wǎng)絡(luò)操作,內(nèi)容如下:
grant codebase "?file:$JAVA_HOME/lib/tools.jar?" {? ? permission java.security.AllPermission;};


二、jmap查看各個代的內(nèi)存使用 jmap?可以從?core文件或進(jìn)程中獲得內(nèi)存的具體匹配情況,包括?Heap size, Perm size等等。
jmap命令格式: ??? ?jmap [ option ] <pid> | <executable core> | <[server-id@]remote-hostname-or-IP>
1)參數(shù)說明?? pidjava進(jìn)程?id executable:產(chǎn)生?core dump?java可執(zhí)行程序 corecore dump文件 remote-hostname-or-IP:遠(yuǎn)程?debug服務(wù)的主機(jī)名或?ip server-id:遠(yuǎn)程?debug服務(wù)的?id?
2?option參數(shù): -heap? 打印heap的概要信息,GC?使用的算法,heap的配置及使用情況?.
-histo[:live]? 打印jvm heap?的直方圖。輸出類名、每個類的實例數(shù)目、對象占用大小。?VM的內(nèi)部類名字開頭會加上前綴?”*”.? 如果加上live?則只統(tǒng)計活的對象數(shù)量。
-dump:[live,]format=b,file=<filename>? 使用hprof二進(jìn)制形式,導(dǎo)出heap?內(nèi)容到文件filename 假如指定live?選項,那么只輸出活的對象到文件?.?
-finalizerinfo? 打印正等候回收的對象的信息?.
-permstat? 打印classload?jvm heap?持久代的信息。 包含每個classloader?的名字、是否存活、地址、父?classloade、加載的?class數(shù)量、內(nèi)部?String的數(shù)量和占用內(nèi)存數(shù)。
-F 當(dāng)pid沒有響應(yīng)的時候,與-dump或者?-histo共同使用,強(qiáng)制生成?dump文件或?histo信息?.?在這個模式下?,live子參數(shù)無效?.?
-J 傳遞參數(shù)給啟動jmap?jvm. 64位機(jī)上使用需要使用如下方式:?jmap -J-d64 -heap pid
使用??jmap -heap pid?,可以查看各個代的內(nèi)存使用情況。
$ jmap -heap 2083
可以觀察到New Generation(Eden Space,From Space,To Space),tenured?generation,Perm Generation的內(nèi)存使用情況
$ jmap -dump:format=b,file=heapdump.hprof <pid>
導(dǎo)出heap dump到文件heapdump.hprof
$ jmap -histo 2083 | jmap -histo:live 2083
可以觀察heap中所有對象的情況(heap中所有生存的對象的情況)。包括對象數(shù)量和所占空間大小。
jmap輸出的?class name結(jié)果中: [C is a char[] [S is a short[] [I is a int[] [B is a byte[] [[I is a int[][]

heap輸出實例 $ jmap -heap 12264
JVM version is 25.65-b01

using parallel threads in the new generation.
using thread-local object allocation.
Concurrent Mark-Sweep GC

Heap Configuration:
?? MinHeapFreeRatio???????? = 40
?? MaxHeapFreeRatio???????? = 70
?? MaxHeapSize????????????? = 8388608000 (8000.0MB)
?? NewSize????????????????? = 2006515712 (1913.5625MB)
?? MaxNewSize?????????????? = 2006515712 (1913.5625MB)
?? OldSize????????????????? = 90636288 (86.4375MB)
?? NewRatio???????????????? = 2
?? SurvivorRatio??????????? = 8
?? MetaspaceSize??????????? = 21807104 (20.796875MB)
?? CompressedClassSpaceSize = 1073741824 (1024.0MB)
?? MaxMetaspaceSize???????? = 17592186044415 MB
?? G1HeapRegionSize???????? = 0 (0.0MB)

Heap Usage:
New Generation (Eden + 1 Survivor Space):
?? capacity = 1805910016 (1722.25MB)
?? used???? = 788045040 (751.5383148193359MB)
?? free???? = 1017864976 (970.7116851806641MB)
?? 43.637004779755316% used
Eden Space:
?? capacity = 1605304320 (1530.9375MB)
?? used???? = 630378472 (601.1757583618164MB)
?? free???? = 974925848 (929.7617416381836MB)
?? 39.26847166274367% used
From Space:
?? capacity = 200605696 (191.3125MB)
?? used???? = 157666568 (150.36255645751953MB)
?? free???? = 42939128 (40.94994354248047MB)
?? 78.59525982751757% used
To Space:
?? capacity = 200605696 (191.3125MB)
?? used???? = 0 (0.0MB)
?? free???? = 200605696 (191.3125MB)
?? 0.0% used
concurrent mark-sweep generation:
?? capacity = 6382092288 (6086.4375MB)
?? used???? = 4612472232 (4398.79630279541MB)
?? free???? = 1769620056 (1687.6411972045898MB)
?? 72.27210174745753% used

18841 interned Strings occupying 1633048 bytes.


jmap?相關(guān)工具 ? jmap dump生成的?heap dump文件,可以使用?IBM HeapAnalyzer分析工具分析 ? 下載: https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=4544bafe-c7a2-455f-9d43-eb866ea60091
? 運(yùn)行:java –Xmx800m –jar ha456.jar

三、jstack?jinfo分析java core文件 jstack工具可以用來獲得?core文件的?java stack?native stack的信息,從而可以知道?java程序是如何崩潰和在程序何處發(fā)生問題。 另外,jstack?工具還可以附屬到正在運(yùn)行的?java程序中,看到?java程序的?java stacknative stack?的信息,如果現(xiàn)在運(yùn)行的?java程序呈現(xiàn)?hung的狀態(tài),?jstack是非常有用的。 命令格式:$ jstack pid
jinfo可以從?core文件里面知道崩潰的?Java應(yīng)用程序的配置信息。 命令額格式:$ jinfo pid

總結(jié)

以上是生活随笔為你收集整理的Java内存使用情况查看工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。