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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何排查JVM内存占用过高

發(fā)布時(shí)間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何排查JVM内存占用过高 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、當(dāng)程序沒有內(nèi)存溢出OOM(out of memory)時(shí)

注意:jmap需要依賴jdk的devel包
查詢class內(nèi)存占用命令:

# jmap -histo pid 展示class類的堆信息

先用top命令查詢程序的pid

# jmap -histo 878193

可以看到該項(xiàng)目內(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中所有生存的對象堆信息,并保存到文件中注意: 這個(gè)命令執(zhí)行,JVM會(huì)先觸發(fā)gc,然后再統(tǒng)計(jì)信息。 # jmap -dump:live,format=b,file=a.log pid 內(nèi)存信息dump到a.log文件中注意: jmap -dump 會(huì)將整個(gè)heap導(dǎo)出,如果heap很大的話,會(huì)比較耗時(shí),且會(huì)暫停應(yīng)用,慎用

2、當(dāng)程序已經(jīng)訪問不了時(shí),需要導(dǎo)出dump日志是要工具分析

# java -XX:+PrintFlagsFinal -version

通過這個(gè)命令看jdk是否開啟開啟堆內(nèi)存溢出時(shí),自動(dòng)導(dǎo)出dump文件

HeapDumpOnOutOfMemoryError 堆內(nèi)存溢出時(shí)自動(dòng)導(dǎo)出開關(guān),默認(rèn)false HeapDumpPath 堆內(nèi)存溢出時(shí)dump文件導(dǎo)出路徑


開啟方法:
1、配置方法
在JAVA_OPTIONS變量中增加

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${目錄}。 例如:export JAVA_OPTS="-Xms2048M -Xmx2048M -Xmn682M -XX:MaxPermSize=96M"

2、參數(shù)說明
(1)-XX:+HeapDumpOnOutOfMemoryError參數(shù)表示當(dāng)JVM發(fā)生OOM時(shí),自動(dòng)生成DUMP文件。
(2)-XX:HeapDumpPath={目錄} 參數(shù)表示生成DUMP文件的路徑,
也可以指定文件名稱,例如:-XX:HeapDumpPath=${目錄}/java_heapdump.hprof。
如果不指定文件名,默認(rèn)為:java_pid_date_time_heapDump.hprof。

查看dump文件工具
MAT、visualVM等都可以的

總結(jié)

以上是生活随笔為你收集整理的如何排查JVM内存占用过高的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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