欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

內(nèi)存OOM問題如何快速定位

呂致盈2年前18瀏覽0評論

內(nèi)存OOM問題如何快速定位?

要快速定位無非就三步:dump內(nèi)存文件,內(nèi)存分析工具生成內(nèi)存泄露分析報告,根據(jù)報告到代碼中分析相關(guān)代碼;

1.dump內(nèi)存文件

./jmap -dump:format=b,file=heap.hprof pid

2.內(nèi)存分析

常用的內(nèi)存分析工具如:MemoryAnalyzer,jprofiler;工具會幫助我們快速的生成一份內(nèi)存泄露分析報告,大致如下所示:

可以根據(jù)上面的問題描述去相關(guān)代碼中,然后進(jìn)行代碼分析;

3.代碼分析

在代碼分析之前,我們大概理一下都會有哪些情況出現(xiàn)OOM;大體上可以分為幾類類情況:JVM本身分配的內(nèi)存過小,分配的內(nèi)存不小代碼可優(yōu)化,分配的內(nèi)存不小存在內(nèi)存泄漏;

1.JVM本身分配的內(nèi)存過小

這種情況一般比較少見,一般配置內(nèi)存至少1G內(nèi)存以上;常見的比如查詢數(shù)據(jù)庫幾十條,上百條數(shù)據(jù)內(nèi)存就不夠用了,加內(nèi)存可以立馬能解決問題的;

2.分配的內(nèi)存不小代碼可優(yōu)化

這種問題就比較常見了,內(nèi)存本身配置的并不小,但是出現(xiàn)OOM;

常見的比如以下查出幾千上萬條數(shù)據(jù)庫記錄,導(dǎo)致內(nèi)存不夠用,這種情況可以分批次查詢;

本地緩存,但是沒有提供清除策略,導(dǎo)致內(nèi)存越來越大,這時候需要指定清除策略比如lru策略;

導(dǎo)入一個文件比如excel,一下全部加載到內(nèi)存中,導(dǎo)致內(nèi)存OOM,這時候可以換一種讀取的方式,通過流讀取方式;

3.分配的內(nèi)存不小存在內(nèi)存泄漏

這種問題就比較難發(fā)現(xiàn)了,開發(fā)者任務(wù)應(yīng)該清除的內(nèi)存并沒有清除,一直存在內(nèi)存中,導(dǎo)致數(shù)據(jù)越積越多,最終導(dǎo)致內(nèi)存OOM;常見的比如hashset因為修改計算hash值的數(shù)據(jù)導(dǎo)致內(nèi)存泄漏;

本人之前遇到過的內(nèi)存溢出分析實戰(zhàn):

Poi讀取Excel引發(fā)的內(nèi)存溢出

https://www.toutiao.com/i6748971979136565764/

java 查看內(nèi)存,內(nèi)存OOM問題如何快速定位