最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何解決項(xiàng)目中java heap space的問(wèn)題

 更新時(shí)間:2020年07月16日 14:12:16   作者:smh0310  
這篇文章主要介紹了如何解決項(xiàng)目中java heap space的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

起因

17年的一個(gè)項(xiàng)目出了OOM(java heap space)問(wèn)題,眼下有個(gè)問(wèn)題:法院項(xiàng)目,不能外網(wǎng),一連接外網(wǎng)高院會(huì)直接定位到計(jì)算機(jī),發(fā)出警報(bào)(檔案的機(jī)密性?。┎荒苓h(yuǎn)程,那只能視頻教他們?cè)趺醋隽?,全程和一個(gè)文員說(shuō)代碼,真的很累==!

過(guò)程

這個(gè)過(guò)程對(duì)一個(gè)不太了解內(nèi)存的問(wèn)題的開(kāi)發(fā)無(wú)疑是艱難的,搜了一下,知道了是內(nèi)存溢出導(dǎo)致的,于是著手解決

網(wǎng)上大多數(shù)都說(shuō)調(diào)整運(yùn)行內(nèi)存,我也跟這個(gè)試了,但是不見(jiàn)效果,具體操作過(guò)程如下

設(shè)置-Xms256m  -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=256M 出現(xiàn)異常,然后調(diào)大參數(shù)-Xms512m -Xmx1024m 沒(méi)有解決,最后調(diào)整到2G 還沒(méi)有解決  以上均在GUI界面修改java options參數(shù),因?yàn)槟沁叞惭b的服務(wù),至于網(wǎng)上說(shuō)修改注冊(cè)表和catalina.bat或者catalina.sh的自行搜索

既然這樣,那就只能通過(guò)代碼優(yōu)化了,開(kāi)啟項(xiàng)目,監(jiān)聽(tīng)堆和內(nèi)存運(yùn)行情況,操作如下

先打開(kāi)jdk下的內(nèi)存監(jiān)聽(tīng)程序(jdk/bin/jvisualvm.exe),這是jdk自帶的,如果你項(xiàng)目已經(jīng)打開(kāi)的情況下,工具里面會(huì)顯示tomcat運(yùn)行的情況

只需要監(jiān)聽(tīng)CPU和內(nèi)存這兩個(gè)部分,CPU會(huì)顯示CPU運(yùn)行情況和GC處理頻率;內(nèi)存會(huì)顯示運(yùn)行時(shí)堆內(nèi)數(shù)據(jù)的變化,如對(duì)象實(shí)例等。

給出現(xiàn)內(nèi)存溢出的模塊發(fā)一個(gè)請(qǐng)求,如果有異常的情況下你就可以監(jiān)測(cè)出來(lái),我的就是一次性加載數(shù)據(jù)太多,實(shí)例化對(duì)象太多導(dǎo)致的堆中年輕代和老年代數(shù)據(jù)占用完

我復(fù)現(xiàn)了一下,堆中出現(xiàn)了一個(gè)很高的點(diǎn),那就是在加載樹(shù)結(jié)構(gòu),然后忽然下落,是因?yàn)镴VM 98% 的時(shí)間都用在了GC上,出現(xiàn)了java heap space ,CPU也能直觀的看到,垃圾回收活動(dòng)出現(xiàn)了一個(gè)較高的峰值

我們來(lái)看一下堆峰值時(shí)的數(shù)據(jù),創(chuàng)建了300萬(wàn)的ArrayList和TreeVO對(duì)象

根據(jù)這些,知道了代碼中出現(xiàn)的問(wèn)題,代碼中有一塊調(diào)用了這樣的代碼,我們來(lái)看一下,這里創(chuàng)建了ArrayList和TreeVO ,而且ArrayList和TreeVO之間是強(qiáng)引用關(guān)系,GC不能清除,所以就導(dǎo)致了OOM

知道了問(wèn)題,那就可以修改了,一步一步追溯到上面的方法,是因?yàn)椴樵儣l件的限制,像當(dāng)于直接把所有文件查詢出來(lái),又因?yàn)閿?shù)據(jù)有上萬(wàn)條,所以就各創(chuàng)建300W的對(duì)象,數(shù)據(jù)庫(kù)刪除排序條件,問(wèn)題解決了 = 。=

這里還不夠理想,TreeVO應(yīng)該放在循環(huán)外面,循環(huán)內(nèi)把對(duì)象實(shí)例化,最后釋放對(duì)象和集合

總結(jié)

  • 問(wèn)題總算解決了,這也是一次難得的真實(shí)上手內(nèi)存的問(wèn)題,可歌可泣啊
  • 現(xiàn)在的開(kāi)發(fā)人員可以說(shuō)是上手就能寫(xiě)代碼,往往忽視了最重要的基礎(chǔ)
  • 看書(shū)是必不可少的(因?yàn)槲易罱诳础渡钊肜斫鈐ava虛擬機(jī)》,不然怎么知道jvisualvm查看內(nèi)存?。?/li>
  • 網(wǎng)上很多講解內(nèi)存的,但是不夠全面,想要系統(tǒng)的了解還是看書(shū)吧

到此這篇關(guān)于如何解決項(xiàng)目中java heap space的問(wèn)題的文章就介紹到這了,更多相關(guān)java heap space問(wèn)題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring boot+自定義 AOP 實(shí)現(xiàn)全局校驗(yàn)的實(shí)例代碼

    spring boot+自定義 AOP 實(shí)現(xiàn)全局校驗(yàn)的實(shí)例代碼

    最近公司重構(gòu)項(xiàng)目,重構(gòu)為最熱的微服務(wù)框架 spring boot, 重構(gòu)的時(shí)候遇到幾個(gè)可以統(tǒng)一處理的問(wèn)題。這篇文章主要介紹了spring boot+自定義 AOP 實(shí)現(xiàn)全局校驗(yàn) ,需要的朋友可以參考下
    2019-04-04
  • Mybatis防止sql注入原理分析

    Mybatis防止sql注入原理分析

    這篇文章主要介紹了Mybatis防止sql注入原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java?斷言?assert的用法詳解

    Java?斷言?assert的用法詳解

    Java?assert斷言機(jī)制是Java5中推出的新特性,它主要用于在程序運(yùn)行時(shí)檢查狀態(tài)或假設(shè)的正確性,本篇文章將全面詳細(xì)地講解Java?assert斷言機(jī)制,包括斷言概述、語(yǔ)法規(guī)則、工作原理、使用場(chǎng)景、注意事項(xiàng)以及示例代碼等方面,需要的朋友可以參考下
    2023-05-05
  • Java代碼實(shí)現(xiàn)四種限流算法詳細(xì)介紹

    Java代碼實(shí)現(xiàn)四種限流算法詳細(xì)介紹

    本文主要介紹了Java代碼實(shí)現(xiàn)四種限流算法詳細(xì)介紹,包含固定窗口限流,滑動(dòng)窗口限流,漏桶限流,令牌桶限流,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • 淺析Disruptor高性能線程消息傳遞并發(fā)框架

    淺析Disruptor高性能線程消息傳遞并發(fā)框架

    這篇文章主要為大家介紹了Disruptor高性能線程消息傳遞并發(fā)框架的簡(jiǎn)單分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • log4j.properties 配置(實(shí)例講解)

    log4j.properties 配置(實(shí)例講解)

    下面小編就為大家?guī)?lái)一篇log4j.properties 配置(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • SpringBoot項(xiàng)目中@Test不出現(xiàn)可點(diǎn)擊運(yùn)行的按鈕問(wèn)題

    SpringBoot項(xiàng)目中@Test不出現(xiàn)可點(diǎn)擊運(yùn)行的按鈕問(wèn)題

    這篇文章主要介紹了SpringBoot項(xiàng)目中@Test不出現(xiàn)可點(diǎn)擊運(yùn)行的按鈕問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 一篇文章教你使用SpringBoot如何實(shí)現(xiàn)定時(shí)任務(wù)

    一篇文章教你使用SpringBoot如何實(shí)現(xiàn)定時(shí)任務(wù)

    這篇文章主要給大家介紹了關(guān)于如何利用一篇文章教你使用SpringBoot實(shí)現(xiàn)定時(shí)任務(wù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Fastjson 常用API介紹及下載地址(推薦)

    Fastjson 常用API介紹及下載地址(推薦)

    Fastjson是一個(gè)Java語(yǔ)言編寫(xiě)的高性能功能完善的JSON庫(kù)。接下來(lái)通過(guò)本文給大家分享Fastjson 常用API介紹及下載地址,感興趣的朋友一起看看吧
    2017-11-11
  • Java中的jinfo命令使用詳解

    Java中的jinfo命令使用詳解

    jinfo是JDK提供的一個(gè)可以實(shí)時(shí)查看Java虛擬機(jī)各種配置參數(shù)和系統(tǒng)屬性的命令行工具,本文給大家介紹下Java中的jinfo命令使用,感興趣的朋友一起看看吧
    2022-03-03

最新評(píng)論

阿合奇县| 合水县| 理塘县| 汉川市| 尖扎县| 尉氏县| 刚察县| 靖江市| 绥芬河市| 甘谷县| 肇源县| 木兰县| 平江县| 来凤县| 仁寿县| 佛冈县| 鹤山市| 萍乡市| 修武县| 固始县| 新干县| 兰西县| 花莲县| 乐东| 镇雄县| 阜康市| 青铜峡市| 皋兰县| 阳新县| 大洼县| 韩城市| 武陟县| 天津市| 广安市| 铁岭县| 昭觉县| 漳州市| 平顺县| 九龙县| 武邑县| 合水县|