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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java 内存溢出快速定位

發(fā)布時(shí)間:2024/3/24 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 内存溢出快速定位 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景:線上數(shù)據(jù)傳輸功能開啟一段時(shí)間后就會(huì)出現(xiàn)內(nèi)存溢出

個(gè)人理解:內(nèi)存溢出,說明要不然獲取到大量數(shù)據(jù)導(dǎo)致內(nèi)存溢出,要不然就是數(shù)據(jù)無法釋放,隨著時(shí)間堆積越來越多。
?

日志:查看日志定位是數(shù)據(jù)傳輸處的內(nèi)存溢出導(dǎo)致的,該模塊并非使用的定時(shí)任務(wù),而是項(xiàng)目啟動(dòng)時(shí)運(yùn)行,while(true)循環(huán)推送數(shù)據(jù),推送完成后sleep5秒。初步以為是里面的對(duì)象未釋放,但檢查后發(fā)現(xiàn)所有對(duì)象使用完以后都置為null了。

檢查方式:使用jdk的工具jconsole.exe,jvisualvm.exe進(jìn)行檢查

本地程序運(yùn)行以后,從jconsole里面看到堆內(nèi)存在緩慢增加,最后達(dá)到上限,內(nèi)存溢出。查看jvisualvm 定位溢出點(diǎn)。

個(gè)人理解就是接收端接收速度沒有發(fā)送端發(fā)送的快,導(dǎo)致發(fā)送端數(shù)據(jù)累積發(fā)送不過去,越來越多導(dǎo)致數(shù)據(jù)溢出。查看接收端發(fā)現(xiàn)30個(gè)線程處理的情況下,5秒鐘只能夠處理約1000條數(shù)據(jù),而發(fā)送端是設(shè)置的沒5秒發(fā)送5000條數(shù)據(jù)。
處理方案:開線程。多套服務(wù)接收。修改接收端方法一次接受多條數(shù)據(jù)(本次不行,限制了一次只能接受一條)

jconsole.exe 和jvisualvm.exe 都在jdk的bin目錄下。jconsole.exe打開后直接點(diǎn)擊對(duì)應(yīng)的程序,就可以查看了

點(diǎn)擊內(nèi)存可以看到內(nèi)存的使用情況。
jvisualvm.exe點(diǎn)開后選擇對(duì)應(yīng)的程序右側(cè)抽樣-內(nèi)存就可以查看內(nèi)存的使用情況了

PS : jconsole.exe的內(nèi)存頁面很適合用來學(xué)習(xí)內(nèi)存的。堆內(nèi)存分3個(gè)部分,Eden space ,Survivor Space,Tenured Gen。

新建的對(duì)象在Eden Space,滿了回收,不能回收的到Survivor Space,多次回收都無法回收的到 Tenured Gen

總結(jié)

以上是生活随笔為你收集整理的java 内存溢出快速定位的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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