溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java中怎么檢查內(nèi)存溢出

發(fā)布時(shí)間:2021-07-24 15:41:10 來源:億速云 閱讀:154 作者:Leah 欄目:編程語言

本篇文章為大家展示了java中怎么檢查內(nèi)存溢出,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

  一、服務(wù)器配置及jvm運(yùn)行參數(shù)

  CentOS release 6.4 (Final)

  MemTotal: 16333916 kB

  Intel(R) Xeon(R) CPU E7-4860 v2 @ 2.60GHz 8C

  -Xmx4096m -Xms4096m -XX:MaxPermSize=512m -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/heap/dump -server

  二、內(nèi)存溢出場景

  800并發(fā)壓測,一個(gè)小時(shí),出現(xiàn)了內(nèi)存溢出。

  三、問題排查

  通過查看gc情況可以看出當(dāng)壓測到半個(gè)小時(shí)的時(shí)候就出現(xiàn)了頻繁FGC 如下:

  jstat -gc 7098 2000

  S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT

  17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796242.3 90112.0 50428.6 348 25.295 8 37.453 62.748

  17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796242.3 90112.0 50428.6 348 25.295 8 37.453 62.748

  17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796242.3 90112.0 50428.6 348 25.295 8 37.453 62.748

  17920.0 17920.0 0.0 0.0 1362432.0 1289751.1 2796544.0 2796395.6 84992.0 50428.6 348 25.295 8 43.144 68.439

  17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796395.6 84992.0 50428.6 348 25.295 9 43.144 68.439

  17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796395.6 84992.0 50428.6 348 25.295 9 43.144 68.439

  17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796395.6 84992.0 50428.6 348 25.295 9 43.144 68.439

  17920.0 17920.0 0.0 0.0 1362432.0 1286917.0 2796544.0 2796468.2 80896.0 50428.6 348 25.295 9 49.018 74.313

  17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796468.2 80896.0 50428.6 348 25.295 10 49.018 74.313

  17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796468.2 80896.0 50428.6 348 25.295 10 49.018 74.313

  17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796468.2 80896.0 50428.6 348 25.295 10 49.018 74.313

  17920.0 17920.0 0.0 0.0 1362432.0 1263355.4 2796544.0 2796045.4 76800.0 50428.6 348 25.295 10 54.915 80.210

  17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796045.4 76800.0 50428.6 348 25.295 11 54.915 80.210

  17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796045.4 76800.0 50428.6 348 25.295 11 54.915 80.210

  17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796045.4 76800.0 50428.6 348 25.295 11 54.915 80.210

  17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796127.0 73216.0 50428.6 348 25.295 12 60.780 86.075

  17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796127.0 73216.0 50428.6 348 25.295 12 60.780 86.075

  17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796127.0 73216.0 50428.6 348 25.295 12 60.780 86.075

  17920.0 17920.0 0.0 0.0 1362432.0 600666.6 2796544.0 2796332.0 70144.0 50428.6 348 25.295 12 66.545 91.840

  半個(gè)小時(shí)的時(shí)候就出現(xiàn)了8S一次FGC,YGC基本不變。通過GC情況就可以分析出,在老年代出現(xiàn)了一個(gè)大對象,一直回收不下去,這樣就可以定位問題了,可以通過分析jvm的內(nèi)存快照。

  分析jvm內(nèi)存dump文件

  jmap -dump:format=b,file=/opt/appdump.bin 7098

  生成了dump文件通過eclipse memory analysis 插件進(jìn)行分析。由于dump文件較大,先得調(diào)整eclipse jvm參數(shù)。

  通過參數(shù)可以看出一個(gè)LinkedBlockingQueue無界隊(duì)列占jvm94.48%,分析代碼看到了,原來是生產(chǎn)者比消費(fèi)者快的多。導(dǎo)致這樣的問題。最后加大了消費(fèi)者的速度,跟消費(fèi)者的數(shù)量。

上述內(nèi)容就是java中怎么檢查內(nèi)存溢出,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI