亚洲欧美日韩熟女|做爱高潮视频网址|国产一区二区三级片|国产Av中文字幕www.性色av|亚洲婷婷永久免费|国产高清中文字幕|欧美变态网站久re视频精品|人妻AV鲁丝第一页|天堂AV一区二区在线观看|综合 91在线精品

JAVA內(nèi)存泄漏問題處理方法經(jīng)驗總結(jié)

2023-04-12


JVM問題,一般會有三種情況,目前遇到了兩種,線程溢出和JVM不夠用


1.線程溢出:unabletocreatenewnativethread


1.1問題描述:

系統(tǒng)在1月4號左右,突然發(fā)現(xiàn)會產(chǎn)生內(nèi)存溢出問題,從日志上看,錯誤信息為:




導(dǎo)致系統(tǒng)不能使用,對外不能相應(yīng),但是觀察gc等又處于正常情況,free系統(tǒng)內(nèi)存也正常。開始重啟機(jī)器進(jìn)行解決,真正的原因查找,過程比較坎坷,經(jīng)歷也比較痛苦。


1.2問題解決

  • pstree查看線程數(shù),發(fā)現(xiàn)系統(tǒng)線程數(shù)不斷增長,直到OOM。

命令:pstree-ppid(對該項已經(jīng)加了監(jiān)控)


  • 線程過多導(dǎo)致的內(nèi)存溢出,但是那里的線程過多呢?!

我們實現(xiàn)了ThreadFactory,通過它,給線程的加一個前綴。來標(biāo)記線程所屬。重現(xiàn)問題后,發(fā)現(xiàn)是task模塊的TaskScheduler的定時任務(wù)中,在方法內(nèi)使用


ExecutorService taskExecutor = Executors.newFixedThreadPool(nThreads);
taskExecutor.invokeAll(tasks);

導(dǎo)致回收不及時,發(fā)生了問題。


2.內(nèi)存溢出:老生代100%無法及時回收


2.1問題現(xiàn)象:


1月31號,中午中影突然所有的機(jī)器陸續(xù)出現(xiàn)不能工作的現(xiàn)象,日志中看不到OOM錯誤,但是不能訪問服務(wù),或者訪問非常的慢,觀察jmap-heap發(fā)現(xiàn)老生代占用達(dá)到99%以上(不同版本JDK顯示可能不一樣。)



2.2問題解決:


1、查看對內(nèi)存使用情況,發(fā)現(xiàn)存在JVM堆內(nèi)存不能釋放的問題


命令:jmap-heappid此命令有時候,會執(zhí)行卡頓,不建議加監(jiān)控


語法:jmap-heappid


2、進(jìn)一步查看gc回收情況,發(fā)現(xiàn)FGC頻率高,而且時間長,且回收不給力。


命令:jstat-gcutilpid


語法:jstat[generalOption|outputOptionsvmid[interval[s|ms][count]]]


3、查看JVM堆中具體有哪些對象。發(fā)現(xiàn)不正常,Byte數(shù)組占用過大。實例達(dá)到1億兩千萬,大小竟然有4g(3958M).同時,訂單、hibernate引擎、mysql結(jié)果集類實例都很多。


命令:jmap-histo


語法:jmap-histo[:live]pid


見附件


4、查看Mysql慢查詢,發(fā)現(xiàn)確實找達(dá)到問題原因。


命令1:mysql數(shù)據(jù)庫上查看,所有的。


命令2:查看當(dāng)前慢查詢


SELECT*frominformation_schema.`PROCESSLIST`;(簡化版:showPROCESSLIST)


本文僅代表作者觀點,版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請在文中注明來源及作者名字。

免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請及時與我們聯(lián)系進(jìn)行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com