欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java內(nèi)存泄漏排查過(guò)程及解決

 更新時(shí)間:2025年07月23日 14:17:22   作者:抹香鯨之海  
公司某服務(wù)內(nèi)存持續(xù)增長(zhǎng),疑似內(nèi)存泄漏,未觸發(fā)OOM,排查方法包括檢查JVM配置、分析GC執(zhí)行狀態(tài)、導(dǎo)出堆內(nèi)存快照并用IDEA Profiler工具定位大對(duì)象及代碼

最近公司生產(chǎn)環(huán)境里面一個(gè)服務(wù)的一直在上升,過(guò)一段時(shí)間就要觸發(fā)報(bào)警,重啟也只能暫時(shí)緩解,由于還沒(méi)有OOM,猜測(cè)可能是內(nèi)存泄漏了。

內(nèi)存泄漏

內(nèi)存泄漏是Java應(yīng)用中常見(jiàn)的問(wèn)題,指對(duì)象已經(jīng)不再被使用,但由于被意外引用而無(wú)法被垃圾回收器(GC)回收,導(dǎo)致內(nèi)存占用持續(xù)增長(zhǎng),最終可能引發(fā)OOM(OutOfMemoryError)錯(cuò)誤。

內(nèi)存問(wèn)題排查

還是采用常規(guī)的辦法,八股文面試必問(wèn)。

1.查看JVM內(nèi)存配置

查看內(nèi)存中對(duì)象的數(shù)量和大小,判斷是否在合理的范圍,如果在合理的范圍內(nèi),增大內(nèi)存配置,調(diào)整內(nèi)存比例就可以了。

查詢一下那個(gè)服務(wù)的pid進(jìn)程號(hào),根據(jù)進(jìn)程號(hào)查詢。

jmap -heap pid

可以看出 老年代的使用率已經(jīng)非常高了。

2.分析gc是否正常執(zhí)行

jstat -gcutil 1000

S0 — Heap上的 Survivor space 0 區(qū)已使用空間的百分比    
S1 — Heap上的 Survivor space 1 區(qū)已使用空間的百分比    
E — Heap上的 Eden space 區(qū)已使用空間的百分比    
O   — Heap上的 Old space 區(qū)已使用空間的百分比    
M   — 元空間 區(qū)已使用空間的百分比
YGC — 從應(yīng)用程序啟動(dòng)到采樣時(shí)發(fā)生 Young GC 的次數(shù)
YGCT– 從應(yīng)用程序啟動(dòng)到采樣時(shí) Young GC 所用的時(shí)間(單位秒)    
FGC — 從應(yīng)用程序啟動(dòng)到采樣時(shí)發(fā)生 Full GC 的次數(shù)
FGCT– 從應(yīng)用程序啟動(dòng)到采樣時(shí) Full GC 所用的時(shí)間(單位秒)    
GCT — 從應(yīng)用程序啟動(dòng)到采樣時(shí)用于垃圾回收的總時(shí)間(單位秒)
LGCC - 進(jìn)行GC的原因(低版本jdk可能沒(méi)有這一列)

3.導(dǎo)出 dump 各種工具分析

以文件方式導(dǎo)出 jvm 內(nèi)存使用情況:

jmap -dump:live,format=b,file=xxxx.hprof pid

4.工具分析dump

jvm 分析工具有很多,我這里使用idea自帶的小儀表盤(pán),無(wú)需單獨(dú)下載,可以直接使用,小儀表盤(pán)的名字叫Profiler,功能比較強(qiáng)大,最好使用idea2023以后的版本。

打開(kāi)dump 文件:

打開(kāi)后頁(yè)面如下:

查找一下大對(duì)象:

快速找出耗內(nèi)存大對(duì)象:

根據(jù)大對(duì)象直接定位到具體的代碼:

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaWeb實(shí)現(xiàn)郵件發(fā)送接收功能

    JavaWeb實(shí)現(xiàn)郵件發(fā)送接收功能

    這篇文章主要為大家詳細(xì)介紹了JavaWeb郵件發(fā)送接收功能的實(shí)現(xiàn),郵件發(fā)送和接收功能是非常常用的功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 在SpringBoot項(xiàng)目中利用maven的generate插件

    在SpringBoot項(xiàng)目中利用maven的generate插件

    今天小編就為大家分享一篇關(guān)于在SpringBoot項(xiàng)目中利用maven的generate插件,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • java == 引發(fā)的線上異常詳解

    java == 引發(fā)的線上異常詳解

    這篇文章主要介紹了java == 引發(fā)的線上異常,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Spring中bean對(duì)象的裝配方式、作用域及生命周期詳解

    Spring中bean對(duì)象的裝配方式、作用域及生命周期詳解

    這篇文章主要介紹了Spring中bean對(duì)象的裝配方式、作用域及生命周期詳解,SprignBoot中?@Bean?完美的替換了了上面的這種在xml中配置的方法,使用以下方法就能讓spring在需要自動(dòng)創(chuàng)建Info對(duì)象時(shí),自動(dòng)調(diào)用這個(gè)方法,需要的朋友可以參考下
    2023-11-11
  • SpringCloud Feign 服務(wù)調(diào)用的實(shí)現(xiàn)

    SpringCloud Feign 服務(wù)調(diào)用的實(shí)現(xiàn)

    Feign是一個(gè)聲明性web服務(wù)客戶端。本文記錄多個(gè)服務(wù)之間使用Feign調(diào)用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Java微信二次開(kāi)發(fā)(三) Java微信各類型消息封裝

    Java微信二次開(kāi)發(fā)(三) Java微信各類型消息封裝

    這篇文章主要為大家詳細(xì)介紹了Java微信二次開(kāi)發(fā)第三篇,Java微信各類型消息封裝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 實(shí)例講解MyBatis如何防止SQL注入

    實(shí)例講解MyBatis如何防止SQL注入

    這篇文章通過(guò)實(shí)例代碼介紹MyBatis如何防止SQL注入,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • java實(shí)現(xiàn)小型局域網(wǎng)群聊功能(C/S模式)

    java實(shí)現(xiàn)小型局域網(wǎng)群聊功能(C/S模式)

    這篇文章主要介紹了java利用TCP協(xié)議實(shí)現(xiàn)小型局域網(wǎng)群聊功能(C/S模式) ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 基于Mybatis plus 自動(dòng)代碼生成器的實(shí)現(xiàn)代碼

    基于Mybatis plus 自動(dòng)代碼生成器的實(shí)現(xiàn)代碼

    本文通過(guò)實(shí)例代碼給大家介紹了基于Mybatis-plus 自動(dòng)代碼生成器的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-05-05
  • Java后端長(zhǎng)時(shí)間無(wú)操作自動(dòng)退出的實(shí)現(xiàn)方式

    Java后端長(zhǎng)時(shí)間無(wú)操作自動(dòng)退出的實(shí)現(xiàn)方式

    這篇文章主要介紹了Java后端長(zhǎng)時(shí)間無(wú)操作自動(dòng)退出的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評(píng)論