中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

JVM如果發(fā)生的OOM的8種原因,你能及時想出解決的方法嗎-創(chuàng)新互聯(lián)

小A:xx服務(wù)又宕機了

山海關(guān)ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

小B:歪日,咋搞的,登上去看看咋回事

小A:又OOM了,不知道哪個**寫的代碼,一坨*一樣。

JVM如果發(fā)生的OOM的8種原因,你能及時想出解決的方法嗎

擼Java的同學(xué),多多少少會碰到內(nèi)存溢出(OOM)的場景,但造成OOM的原因卻是多種多樣。

堆溢出

這種場景最為常見,報錯信息:

java.lang.OutOfMemoryError:?Java?heap?space

原因

1、代碼中可能存在大對象分配

2、可能存在內(nèi)存泄露,導(dǎo)致在多次GC之后,還是無法找到一塊足夠大的內(nèi)存容納當(dāng)前對象。

解決方法

1、檢查是否存在大對象的分配,最有可能的是大數(shù)組分配

2、通過jmap命令,把堆內(nèi)存dump下來,使用mat工具分析一下,檢查是否存在內(nèi)存泄露的問題

3、如果沒有找到明顯的內(nèi)存泄露,使用 -Xmx 加大堆內(nèi)存

4、還有一點容易被忽略,檢查是否有大量的自定義的 Finalizable 對象,也有可能是框架內(nèi)部提供的,考慮其存在的必要性

永久代/元空間溢出

報錯信息:

java.lang.OutOfMemoryError:?PermGen?space

java.lang.OutOfMemoryError:?Metaspace

原因

永久代是 HotSot 虛擬機對方法區(qū)的具體實現(xiàn),存放了被虛擬機加載的類信息、常量、靜態(tài)變量、JIT編譯后的代碼等。

JDK8后,元空間替換了永久代,元空間使用的是本地內(nèi)存,還有其它細(xì)節(jié)變化:

  • 字符串常量由永久代轉(zhuǎn)移到堆中

  • 和永久代相關(guān)的JVM參數(shù)已移除

可能原因有如下幾種:

1、在Java7之前,頻繁的錯誤使用String.intern()方法

2、運行期間生成了大量的代理類,導(dǎo)致方法區(qū)被撐爆,無法卸載

3、應(yīng)用長時間運行,沒有重啟

沒有重啟 JVM 進(jìn)程一般發(fā)生在調(diào)試時,如下面 tomcat 官網(wǎng)的一個 FAQ:

Why does the memory usage increase when I redeploy a web application?

That is because your web application has a memory leak.

A common issue are “PermGen” memory leaks. They happen because the Classloader (and the Class objects it loaded) cannot be recycled unless some requirements are met (). They are stored in the permanent heap generation by the JVM, and when you redeploy a new class loader is created, which loads another copy of all these classes. This can cause OufOfMemoryErrors eventually.

(*) The requirement is that all classes loaded by this classloader should be able to be gc’ed at the same time.

解決方法

因為該OOM原因比較簡單,解決方法有如下幾種:

1、檢查是否永久代空間或者元空間設(shè)置的過小

2、檢查代碼中是否存在大量的反射操作

3、dump之后通過mat檢查是否存在大量由于反射生成的代理類

4、放大招,重啟JVM

GC overhead limit exceeded

這個異常比較的罕見,報錯信息:

java.lang.OutOfMemoryError:GC?overhead?limit?exceeded

原因

這個是JDK6新加的錯誤類型,一般都是堆太小導(dǎo)致的。Sun 官方對此的定義:超過98%的時間用來做GC并且回收了不到2%的堆內(nèi)存時會拋出此異常。

解決方法

1、檢查項目中是否有大量的死循環(huán)或有使用大內(nèi)存的代碼,優(yōu)化代碼。

2、添加參數(shù) -XX:-UseGCOverheadLimit 禁用這個檢查,其實這個參數(shù)解決不了內(nèi)存問題,只是把錯誤的信息延后,最終出現(xiàn) java.lang.OutOfMemoryError: Java heap space。

3、dump內(nèi)存,檢查是否存在內(nèi)存泄露,如果沒有,加大內(nèi)存。

方法棧溢出

報錯信息:

java.lang.OutOfMemoryError?:?unable?to?create?new?native?Thread

原因

出現(xiàn)這種異常,基本上都是創(chuàng)建的了大量的線程導(dǎo)致的,以前碰到過一次,通過jstack出來一共8000多個線程。

解決方法

1、通過 -Xss 降低的每個線程棧大小的容量

2、線程總數(shù)也受到系統(tǒng)空閑內(nèi)存和操作系統(tǒng)的限制,檢查是否該系統(tǒng)下有此限制:

  • /proc/sys/kernel/pid_max

  • /proc/sys/kernel/thread-max

  • maxuserprocess(ulimit -u)

  • /proc/sys/vm/maxmapcount

非常規(guī)溢出

下面這些OOM異常,可能大部分的同學(xué)都沒有碰到過,但還是需要了解一下

分配超大數(shù)組

報錯信息 :

java.lang.OutOfMemoryError?:?Requested?array?size?exceeds?VM?limit

這種情況一般是由于不合理的數(shù)組分配請求導(dǎo)致的,在為數(shù)組分配內(nèi)存之前,JVM 會執(zhí)行一項檢查。要分配的數(shù)組在該平臺是否可以尋址(addressable),如果不能尋址(addressable)就會拋出這個錯誤。

解決方法就是檢查你的代碼中是否有創(chuàng)建超大數(shù)組的地方。

swap溢出

報錯信息 :

java.lang.OutOfMemoryError?:?Out?of?swap?space

這種情況一般是操作系統(tǒng)導(dǎo)致的,可能的原因有:

1、swap 分區(qū)大小分配不足;

2、其他進(jìn)程消耗了所有的內(nèi)存。

解決方案:

1、其它服務(wù)進(jìn)程可以選擇性的拆分出去

2、加大swap分區(qū)大小,或者加大機器內(nèi)存大小

本地方法溢出

報錯信息 :

java.lang.OutOfMemoryError:?stack_trace_with_native_method

本地方法在運行時出現(xiàn)了內(nèi)存分配失敗,和之前的方法棧溢出不同,方法棧溢出發(fā)生在 JVM 代碼層面,而本地方法溢出發(fā)生在JNI代碼或本地方法處。

這個異常出現(xiàn)的概率極低,只能通過操作系統(tǒng)本地工具進(jìn)行診斷,難度有點大,還是放棄為妙。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章名稱:JVM如果發(fā)生的OOM的8種原因,你能及時想出解決的方法嗎-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://www.rwnh.cn/article28/cchhjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、域名注冊、網(wǎng)頁設(shè)計公司、網(wǎng)站導(dǎo)航、商城網(wǎng)站、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
花莲县| 高淳县| 镶黄旗| 奉化市| 嘉祥县| 嘉定区| 册亨县| 通江县| 宽甸| 和平县| 博野县| 济宁市| 旅游| 琼海市| 察隅县| 呼和浩特市| 高碑店市| 阜新| 横山县| 奎屯市| 文水县| 江西省| 菏泽市| 五河县| 河源市| 栖霞市| 横山县| 宁南县| 栾川县| 博罗县| 曲水县| 渑池县| 武宣县| 明水县| 平南县| 叶城县| 宁明县| 云浮市| 任丘市| 耒阳市| 平果县|