真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java中關(guān)于OOM的場景及解決方法是什么

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)Java中關(guān)于OOM的場景及解決方法是什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),新平企業(yè)網(wǎng)站建設(shè),新平品牌網(wǎng)站建設(shè),網(wǎng)站定制,新平網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,新平網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

1、OOM for Heap=>例如:java.lang.OutOfMemoryError: Java heap space

分  析

此OOM是由于JVM中heap的***值不滿足需要,將設(shè)置heap的***值調(diào)高即可,參數(shù)樣例為:-Xmx2G

解決方法

調(diào)高h(yuǎn)eap的***值,即-Xmx的值調(diào)大。2、OOM for Perm=>例如:java.lang.OutOfMemoryError: Java perm space

分  析

此OOM是由于JVM中perm的***值不滿足需要,將設(shè)置perm的***值調(diào)高即可,參數(shù)樣例為:-XX:MaxPermSize=512M

解決方法

調(diào)高h(yuǎn)eap的***值,即-XX:MaxPermSize的值調(diào)大。

另外,注意一點(diǎn),Perm一般是在JVM啟動(dòng)時(shí)加載類進(jìn)來,如果是JVM運(yùn)行較長一段時(shí)間而不是剛啟動(dòng)后溢出的話,很有可能是由于運(yùn)行時(shí)有類被動(dòng)態(tài)加載進(jìn)來,此時(shí)建議用CMS策略中的類卸載配置。

如:-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled3、OOM for GC=>例如:java.lang.OutOfMemoryError: GC overhead limit exceeded

分  析

此OOM是由于JVM在GC時(shí),對(duì)象過多,導(dǎo)致內(nèi)存溢出,建議調(diào)整GC的策略,在一定比例下開始GC而不要使用默認(rèn)的策略,或者將新代和老代設(shè)置合適的大小,需要進(jìn)行微調(diào)存活率。

解決方法

改變GC策略,在老代80%時(shí)就是開始GC,并且將-XX:SurvivorRatio(-XX:SurvivorRatio=8)和-XX:NewRatio(-XX:NewRatio=4)設(shè)置的更合理。4、OOM for native thread created=>

如:java.lang.OutOfMemoryError: unable to create new native thread

分  析

參考如下:

(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads

MaxProcessMemory   指的是一個(gè)進(jìn)程的***內(nèi)存

JVMMemory         JVM內(nèi)存

ReservedOsMemory   保留的操作系統(tǒng)內(nèi)存

ThreadStackSize      線程棧的大小

如果JVM內(nèi)存調(diào)的過大或者可利用率小于20%,可以建議將heap及perm的***值下調(diào),并將線程棧調(diào)小,即-Xss調(diào)小,如:-Xss128k

解決方法

在JVM內(nèi)存不能調(diào)小的前提下,將-Xss設(shè)置較小,如:-Xss:128k

5、OOM for allocate huge array=>例如:Exception in thread "main": java.lang.OutOfMemoryError: Requested array size exceeds VM limit

分  析

此類信息表明應(yīng)用程序(或者被應(yīng)用程序調(diào)用的APIs)試圖分配一個(gè)大于堆大小的數(shù)組。例如,如果應(yīng)用程序new一個(gè)數(shù)組對(duì)象,大小為512M,但是***堆大小為256M,因此OutOfMemoryError會(huì)拋出,因?yàn)閿?shù)組的大小超過虛擬機(jī)的限制。

解決方法

(1)、首先檢查heap的-Xmx是不是設(shè)置的過小

(2)、如果heap的-Xmx已經(jīng)足夠大,那么請(qǐng)檢查應(yīng)用程序是不是存在bug,例如:應(yīng)用程序可能在計(jì)算數(shù)組的大小時(shí),存在算法錯(cuò)誤,導(dǎo)致數(shù)組的size很大,從而導(dǎo)致巨大的數(shù)組被分配。

6、 OOM for small swap=>例如:Exception in thread "main": java.lang.OutOfMemoryError: request bytes for . Out of swap space?

分  析

拋出這類錯(cuò)誤,是由于從native堆中分配內(nèi)存失敗,并且堆內(nèi)存可能接近耗盡。這類錯(cuò)誤可能跟應(yīng)用程序沒有關(guān)系,例如下面兩種原因也會(huì)導(dǎo)致錯(cuò)誤的發(fā)生:

(1)操作系統(tǒng)配置了較小的交換區(qū)

(2)系統(tǒng)的另外一個(gè)進(jìn)程正在消耗所有的內(nèi)存

解決方法

(1)、檢查os的swap是不是沒有設(shè)置或者設(shè)置的過小

(2)、檢查是否有其他進(jìn)程在消耗大量的內(nèi)存,從而導(dǎo)致當(dāng)前的JVM內(nèi)存不夠分配。

注意:雖然有時(shí)部分顯示導(dǎo)致OOM的原因,但大多數(shù)情況下,顯示的是提示分配失敗的源模塊的名稱,所以有必要查看日志文件,如crash時(shí)的hs文件。

上述就是小編為大家分享的Java中關(guān)于OOM的場景及解決方法是什么了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章題目:Java中關(guān)于OOM的場景及解決方法是什么
網(wǎng)址分享:http://weahome.cn/article/jjipdd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部