背景
在跑一個(gè)項(xiàng)目的時(shí)候需要構(gòu)建大量對(duì)象,導(dǎo)致出現(xiàn)內(nèi)存溢出錯(cuò)誤。去網(wǎng)上查需要修改堆大小,于是按照網(wǎng)上80%的方法修改了配置,結(jié)果依然內(nèi)存溢出。于是,開啟了半天的刨根問(wèn)底之旅。
過(guò)程
第一階段
首先是按照網(wǎng)上說(shuō)的方法,打開idea在上方找到help,然后點(diǎn)擊edit custom vm options,

然后就打開了下面這個(gè)文件,然后修改-Xmx,-Xms等堆內(nèi)存設(shè)置,這已經(jīng)是我改的亂七八糟的結(jié)果了。

然后關(guān)閉idea重啟,運(yùn)行程序,不行。。。
第二階段
我開始搜索其他方法,有一個(gè)教程說(shuō),可以改settings里面的一些關(guān)于jvm的配置,重復(fù)了幾次,改完后依然沒有效果。
這時(shí)我開始學(xué)習(xí)借助工具分析,在jdk的bin目錄下有一個(gè)程序叫jvisualvm.exe,它是jdk自帶的分析工具。打開它,

打開長(zhǎng)這樣,

在你的程序啟動(dòng)之后,左側(cè)欄里會(huì)有你的程序名,雙擊它,在右面會(huì)出現(xiàn)它的概述,監(jiān)視等,都可以點(diǎn)進(jìn)去。
下面就是platform的概述,可以看到我剛剛改的亂七八糟的配置。

點(diǎn)擊監(jiān)視就可以看到cpu,內(nèi)存等的運(yùn)行情況。

接下來(lái),我便開始實(shí)驗(yàn),發(fā)現(xiàn)無(wú)論怎么改vmoptions中的配置,在platform的概述中都能更新為修改后的內(nèi)容。但是監(jiān)視我的運(yùn)行程序時(shí)發(fā)現(xiàn),我的堆內(nèi)存大小一點(diǎn)也沒有變。。。并且堆的大小還沒擴(kuò)容到最大堆大小便開始頻繁gc,最后內(nèi)存溢出(開始焦慮)
第三階段
為了搞明白為啥沒用完堆內(nèi)存就溢出,繼續(xù)學(xué)習(xí)工具。
在剛剛的軟件中點(diǎn)擊,工具->插件->可用插件->選擇visual vm并開始下載安裝。這個(gè)插件可以幫助我們看到新生代,老年代等具體的內(nèi)存分配情況。

安裝好后,再修改配置,跑幾遍程序。發(fā)現(xiàn)了問(wèn)題所在,無(wú)論我怎么修改配置,我的新生代,老年代的大小都沒變,相當(dāng)于修改無(wú)效。。。而在不斷的創(chuàng)建對(duì)象和gc中,我的老年代滿了。。。(無(wú)語(yǔ))
我突然想到,還可以在程序的運(yùn)行配置中添加參數(shù),修改堆內(nèi)存。于是,點(diǎn)擊上方程序(xxxApplication)的小箭頭,點(diǎn)擊edit configurations,

然后在environment下的vm options中再加上你的修改,然后應(yīng)用。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-528013.html

再運(yùn)行程序,通過(guò)visual vm觀察堆內(nèi)存分配,發(fā)現(xiàn)okok,按照自己的配置分配內(nèi)存了。完整的程序執(zhí)行一遍,順利順利,沒有內(nèi)存溢出了。
至此,這個(gè)問(wèn)題終于搞定了。。。(開心)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-528013.html
總結(jié)
- 之前遇到內(nèi)存溢出問(wèn)題的時(shí)候,也上網(wǎng)搜了好多答案,但是怕麻煩,所以一直拖著沒有解決。今天逼著自己必須把它搞定,無(wú)論網(wǎng)上說(shuō)的什么方法我都嘗試,才有決心攻克難關(guān)。
- 今天也學(xué)習(xí)了visual vm的使用,之前在網(wǎng)上看到相關(guān)用工具分析堆內(nèi)存的帖子就退出去,還是畏難吧,今天按照教程打開了工具,下載了插件,發(fā)現(xiàn)也沒有那么難,對(duì)jvm也有了新的理解。
- 這次問(wèn)題的排查過(guò)程,獨(dú)立也不獨(dú)立,希望以后遇到困難不要害怕,勇敢解決!
到了這里,關(guān)于Java內(nèi)存溢出(outofmemory:Java heap space)更改堆大小的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!