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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java jstat gc_分析JVM GC及内存情况的方法

發布時間:2024/4/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java jstat gc_分析JVM GC及内存情况的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當JVM響應變慢或者停滯的時候,我們往往需要對GC和其內存情況是進行分析,下面列舉一些常用的分析方法和工具:

獲得GC信息的方法

-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

-XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStopped

-XX:+ PrintGCApplicationConcurrentTime,打印在collection之間,程序運行的時間

-XX:+ PrintGCApplicationStopped,打印的是collection pause的時間

下面是這兩個參數的輸出樣例:

Application time: 1.3874623 seconds

[GC [DefNew: 8064K->63K(8128K), 0.0509215 secs] 11106K->5994K(32704K), 0.0510972 secs]

Total time for which application threads were stopped: 0.0517092 seconds

Application time: 1.5225065 seconds

[GC [DefNew: 8127K->63K(8128K), 0.0432982 secs] 14058K->8273K(32704K), 0.0434172 secs]

Total time for which application threads were stopped: 0.0440447 seconds

Application time: 1.4263524 seconds

[GC [DefNew: 8127K->64K(8128K), 0.0363538 secs] 16337K->10381K(32704K), 0.0364811 secs]

Total time for which application threads were stopped: 0.0369103 seconds

從上面可以看出程序在minor collection之間跑了1.38到1.52秒,minor collection pause在.036到.051。所以minor collection的開銷大致在2.6%到3.6%.

jstat

jstat的-option參數有很多種,輸出的內容各不相同,詳情參考官方文檔

dump內存的方法

被動dump

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/dump.hprof

在OutOfMemory時,輸出一個dump文件,記錄當時的內存快照,并把文件輸出到/tmp/dump.hprof文件

主動dump

利用jmap把內存dump下來,比如jmap -dump:live,format=b,file=dump.hprof

內存dump分析工具

jhat

Java內置工具(教程),dump文件少于1G的時候可以用這個,它會起一個web服務,用于查看dump信息。

需要有一臺內存大于dump文件大小2倍的機器

HeapAnalyzer

直接分析dump并展示的客戶端(下載)

需要有一臺內存大于dump文件大小2倍的機器,還需要能顯示出來的(桌面操作系)

mat

展示dump的客戶端(神器)(下載)(教程)

mat分為展示和分析模塊,可以用一個ParseHeapDump.sh先對dump文件分析并產生一堆索引文件(用服務器搞),然后再用mat的桌面應用打開這些文件,4G內存的機器分析8G的dump完全沒壓力。

如果你下的mat沒有ParseHeapDump.sh,可以自己添加一個:

#!/bin/sh

#

# This script parses a heap dump.

# Adjust the path to java, version 5 or later, and the heap size as required.

# Suitable for 64-bit and 32-bit Java, but a 64-bit Java is required

# for larger heap sizes.

#

# Usage: ParseHeapDump.sh [report]*

#

# The leak report has the id org.eclipse.mat.api:suspects

# The top component report has the id org.eclipse.mat.api:top_components

#

java -Xmx8192M -jar "`dirname "$0"`"/plugins/org.eclipse.equinox.launcher_1*.jar -consoleLog -application org.eclipse.mat.api.parse "$@"

相關資料

總結

以上是生活随笔為你收集整理的java jstat gc_分析JVM GC及内存情况的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。