如何排查JVM内存占用过高
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                如何排查JVM内存占用过高
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                1、當程序沒有內(nèi)存溢出OOM(out of memory)時
注意:jmap需要依賴jdk的devel包
 查詢class內(nèi)存占用命令:
先用top命令查詢程序的pid
# jmap -histo 878193可以看到該項目內(nèi)存的占用情況,就可以分析出是哪里的問題了
注意:這里的[B 和 [C的表示的是數(shù)組,[[B 是byte的二維數(shù)組
[Z = boolean [B = byte [S = short [I = int [J = long [F = float [D = double [C = char [L = any non-primitives(Object)jmap其他命令:
# jmap -heap pid 查詢pid的整體堆信息 # jmap -histo:live pid>a.log 查詢heap中所有生存的對象堆信息,并保存到文件中注意: 這個命令執(zhí)行,JVM會先觸發(fā)gc,然后再統(tǒng)計信息。 # jmap -dump:live,format=b,file=a.log pid 內(nèi)存信息dump到a.log文件中注意: jmap -dump 會將整個heap導出,如果heap很大的話,會比較耗時,且會暫停應用,慎用2、當程序已經(jīng)訪問不了時,需要導出dump日志是要工具分析
# java -XX:+PrintFlagsFinal -version通過這個命令看jdk是否開啟開啟堆內(nèi)存溢出時,自動導出dump文件
HeapDumpOnOutOfMemoryError 堆內(nèi)存溢出時自動導出開關,默認false HeapDumpPath 堆內(nèi)存溢出時dump文件導出路徑
 開啟方法:
 1、配置方法
 在JAVA_OPTIONS變量中增加
2、參數(shù)說明
 (1)-XX:+HeapDumpOnOutOfMemoryError參數(shù)表示當JVM發(fā)生OOM時,自動生成DUMP文件。
 (2)-XX:HeapDumpPath={目錄} 參數(shù)表示生成DUMP文件的路徑,
 也可以指定文件名稱,例如:-XX:HeapDumpPath=${目錄}/java_heapdump.hprof。
 如果不指定文件名,默認為:java_pid_date_time_heapDump.hprof。
查看dump文件工具
 MAT、visualVM等都可以的
總結(jié)
以上是生活随笔為你收集整理的如何排查JVM内存占用过高的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 如何利用虚拟光驱安装windows 7?
 - 下一篇: 【MATLAB-app】appdesig