国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
java.lang.OutOfMemoryError: unable to create new native thread內(nèi)存泄漏分析--備忘
【問題現(xiàn)象】:
自動化用例跑了約三個多小時后,界面響應(yīng)時間長,界面出現(xiàn)500錯誤。之后再點擊時,頁面重定向至首頁。查看jboss下的server.log文件發(fā)現(xiàn)內(nèi)存溢出的OutOfMemory異常。

【出現(xiàn)的問題日志】:
java.lang.OutOfMemoryError
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:203)
at java.util.jar.JarFile.<init>(JarFile.java:132)
at java.util.jar.JarFile.<init>(JarFile.java:97)

2010-11-24 15:32:48,377 ERROR [STDERR] Exception in thread "Thread-5271" 
2010-11-24 15:32:48,377 ERROR [STDERR] java.lang.OutOfMemoryError: unable to create new native thread
【問題定位】:
對于一般的內(nèi)存泄漏導(dǎo)致的堆棧溢出,通常的錯誤信息主要有以下幾種。
1. java.lang.OutOfMemoryError: Java heap space
2. java.lang.OutOfMemoryError: PermGen space
3. java.lang.OutOfMemoryError: Requested array size exceeds VM limit
4. java.lang.OutOfMemoryError: <reason> <stack trace> (Native method)

而在出現(xiàn)內(nèi)存泄露的機器上,其日志顯示是無法創(chuàng)建本地線程的原因所引起的。這里的異常信息是:java.lang.OutOfMemoryError: unable to create new native thread,對應(yīng)上述內(nèi)存溢出的第4種場景。盡管可以初步懷疑是虛擬機參數(shù)的設(shè)置導(dǎo)致的問題,但實際上還是需要確認(rèn)系統(tǒng)在自動化場景下有沒有其他內(nèi)存泄露問題。
重新跑自動化,并中間使用“jstat –gcutil 進程ID 1000 3 >>jstat.txt”命令,每隔3秒查看一下虛擬機堆空間的回收情況。在運行了三個多小時后,發(fā)行server.log種已經(jīng)出現(xiàn)了該OutOfMemory的異常信息。此時查看了jstat.txt文件,發(fā)現(xiàn)從自動化開始運行一直到堆棧溢出,內(nèi)存回收都很正常。全部垃圾回收時間花費了5秒左右,且未有full gc,全為young gc的時間。持久區(qū)(Perm)、年老區(qū)(Old),分別占用了25%、19%左右的空間。且使用“top”命令監(jiān)測中間CPU和內(nèi)存占用都比較穩(wěn)定,沒有激增的現(xiàn)象。
使用“jmap –hito 進程ID”查看內(nèi)存對象統(tǒng)計,發(fā)現(xiàn)沒有業(yè)務(wù)邏輯相關(guān)的類導(dǎo)致的泄露問題。系統(tǒng)中創(chuàng)建最多的就是與Sting相關(guān)的char數(shù)組對象。這個也是正常情況,排除程序級別的內(nèi)存泄漏問題。也就是說堆棧溢出不是1和2的兩種情況。
此時再分析server.log種的日志信息,得知是無法創(chuàng)建本地線程所致的問題。也就是說在壓力環(huán)境下?lián)碛写罅康木€程,或者本地內(nèi)存耗盡時,企圖創(chuàng)建新的線程時拋出。而系統(tǒng)能創(chuàng)建的線程數(shù)的計算公式如下: 
(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads 
MaxProcessMemory 指的是一個進程的最大內(nèi)存
JVMMemory JVM內(nèi)存
ReservedOsMemory 保留的操作系統(tǒng)內(nèi)存
ThreadStackSize 線程棧的大小

【解決方法】:
針對無法創(chuàng)建更多本地線程的情況,調(diào)整線程棧的大小,添加-Xss選項,設(shè)置為256k后再跑自動化,發(fā)現(xiàn)問題解決。
 JAVA_OPTS="-Xms2048M -Xmx2048M -Xmn512M -Xss256k -XX:PermSize=512M….”

(###)
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
常見的 OOM 異常分析(硬核干貨)
java.lang.OutOfMemoryError:unable to create native thread
jvm內(nèi)存調(diào)優(yōu)經(jīng)驗總結(jié)
解決 - java.lang.OutOfMemoryError: unable to create new native thread
深入理解OutOfMemoryError
JVM 系列二:java.lang.OutOfMemoryError: unable to create new native thread
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服