javalangoutofmemoryerrorunabletocreatenewnativethread內(nèi)存泄漏分析

javalangoutofmemoryerrorunabletocreatenewnativethread內(nèi)存泄漏分析

ID:21042820

大?。?51.73 KB

頁數(shù):10頁

時間:2018-10-19

javalangoutofmemoryerrorunabletocreatenewnativethread內(nèi)存泄漏分析_第1頁
javalangoutofmemoryerrorunabletocreatenewnativethread內(nèi)存泄漏分析_第2頁
javalangoutofmemoryerrorunabletocreatenewnativethread內(nèi)存泄漏分析_第3頁
javalangoutofmemoryerrorunabletocreatenewnativethread內(nèi)存泄漏分析_第4頁
javalangoutofmemoryerrorunabletocreatenewnativethread內(nèi)存泄漏分析_第5頁
資源描述:

《javalangoutofmemoryerrorunabletocreatenewnativethread內(nèi)存泄漏分析》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫。

1、【問題現(xiàn)象】:自動化用例跑了約三個多小時后,界面響應吋間長,界面出現(xiàn)500錯誤。之后再點擊時,頁面重定向至首頁。查看jboss下的server,log文件發(fā)現(xiàn)內(nèi)存溢出的OutOfMemory異常?!境霈F(xiàn)的問題H志】:java.lang.OutOfMemoryRrroratjava.util.zip.ZipFilc.open(NativeMethod)atjava.util.zip.ZipEile.(ZipEile.java:203)atjava.util.jar.JarFile.(JarFile.j

2、ava:132)atjava.util.jar.JarFile.(JarFile.java:97)2010-11-2415:32:48,377ERROR[STDERR]Exceptioninthread"Thread-5271"2010-11-2415:32:48,377ERROR[STDERR]java.lang.OutOfMemoryError:unabletocreatenewnativethread【問題定位】:對于一般的N存泄漏導致的堆棧溢出,通常的錯誤信息主要有以下幾種。1.java.lang.Ou

3、tOfMemoryError:Javaheapspace2.java.lang.OutOfMemoryError:PermGenspace3.java.lang.OutOfMemoryError:RequestedarraysizeexceedsVMlimit4.java.lang.OutOfMemoryRrror:〈reason〉〈stacktrace〉(Nativemethod)回復次數(shù):1樓得分:回復于:2010-12-2716:06:51而在出現(xiàn)內(nèi)存泄露的機器上,其日志顯示是無法創(chuàng)建本地線程的原因所引起的。這里的異

4、常信息是:luozhangwen(我不懶一押寶黨實習生)等級:java.lang.OutOfMemoryError:unabletocreatenewnativethread,對應上述內(nèi)存溢出的第4種場景。盡管可以初步懷疑是虛擬機參數(shù)的設置導致的問題,但實際上還是需要確汄系統(tǒng)在自動化場澩下有沒有其他內(nèi)存泄露問題。重新跑自動化,并中間使川“jstat-gcutil進程ID10003>>jstat.txt”命令,每隔3秒查看一下虛擬機堆空間的回收情況。在運行了三個多小時后,發(fā)行server,log種己經(jīng)出現(xiàn)了該OutOfMem

5、ory的異常信息。此時查看了jstat.txt文件,發(fā)現(xiàn)從自動化斤始運行一直到堆棧溢出,內(nèi)存回收都很正常。全部垃圾回收時間花費Z5秒左右,且未有fullgc,全為younggc的時間。持久區(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è)務邏輯相關的類異致的泄露問題。系統(tǒng)屮創(chuàng)建最多的就是與Sting相關的char數(shù)組對象。這個也是正常情況,排除程序級別的內(nèi)存泄漏問題。也就

6、是說堆棧溢出不是1和2的兩種情況。此時再分析server,log種的日志信息,得知是無法創(chuàng)建本地線程所致的問題。也就是說在壓力環(huán)境丁擁有大量的線程,或者本地內(nèi)存耗盡吋,企圖創(chuàng)建新的線程吋拋出。而系統(tǒng)能創(chuàng)建的線程數(shù)的計算公式如下:(MaxProcessMemory-JVMMemory-ReservedOsMemory)/(ThreadStackSizc)=NumberofthreadsMaxProcessMemory指的是一個進程的最大內(nèi)存JVMMemoryJVM內(nèi)存ReservedOsMemory保留的操作系統(tǒng)內(nèi)存Thre

7、adStackSize線程棧的大小【解決方法】:針對無法創(chuàng)建更多本地線程的情況,調(diào)整線程桟的大小,添加-Xss選項,設置為256k后再跑自動化,發(fā)現(xiàn)問題解決。JAVA_0PTS=〃-Xms2048M-Xmx2048M-Xmn512M-Xss256k-XX:PermSize=512M“*.”星期一早上到了公司,據(jù)稱產(chǎn)品環(huán)境拋出了最可愛的異常一OutOfMemory,它是這樣來描述他自己的:java.Iang.OutOfMemoryError:unabletocreatenewnativethread而_氏這位仁兄竟然還堂而皇

8、之地同時出現(xiàn)在丫3個application里面,所有應用全部遭殃。那可愛的00M是如何產(chǎn)生的呢?直接原因是創(chuàng)建的線程太多Y,根本原因是某個地方的內(nèi)存限制了。搜羅了一下在網(wǎng)上找到丫一個計算公式:(MaxProcessMemory?JVMMemory-ReservedOsMemory)/(ThreadSta

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。