當前位置:編程學習大全網 - 源碼下載 - 如何分析native memory leak

如何分析native memory leak

運行壹段時間後,程序出現異常:部分操作無法進行.異常日誌如下:java.lang.OutOfMemoryError:unabletocreatenewnativethreadatjava.lang.Thread.start0(NativeMethod)atjava.lang.Thread.start(UnknownSource)atorg.eclipse.jface.operation.ModalContext.run(ModalContext.java:387)atcom.huawei.unistar.quoter.framework.guide.internal.GuideDialog.run(GuideDialog.java:585)atcom.huawei.unistar.quoter.framework.guide.internal.GuidePage.needShowPage(GuidePage.java:99)atcom.huawei.unistar.quoter.framework.guide.internal.Guide.getStartingPage(Guide.java:123)atorg.eclipse.jface.wizard.WizardDialog.showStartingPage(WizardDialog.java:1173)此時在任務管理器裏面發現進程內存大小幾乎達到1.3G問題分析:  1,首先懷疑是JVM堆空間內存泄露.於是用jmap生成dump文件,使用MAT工具進行OOM分析,發現JVM堆空間使用情況良好(設置最大堆空間為512M,而程序出現問題時,堆空間也就使用了300M左右).而且也沒有發現內存泄露點.    2,然後懷疑是自動化工具引起的native內存泄露.因此特地手工重復測試壹遍,結果顯示:程序運行良好,jvm堆空間大小壹直穩定在壹個區間;而且用工具分析,也沒有發現內存泄露.       根據上面兩個步驟地分析,因此我們懷疑是自動化工具(或測試用例)引起的native內存泄露.苦於對AutoMan和RFT工具(無源碼)的不了解,不好從java層面下手分析問題.  所以想逆過來分析:從native內存著手,找出內存泄露的原因!1、線程數很少,也大概只有15個左右。2、執行壹系列用例後就出現這個情況,必現的。2.1懷疑是Autonman的問題,因為這些用例,用手工跑就不會出現,壹旦用Automan集成就出問題。2.2又懷疑是RCP應用程序的問題,因為老的版本,自動化用例都能執行,最近只有被測的應用程序更新了。2.3莫非是RCP應用程序的場景,觸發了automan的問題。我覺得這種情況壹般都是被測試場景的原因比較多壹點。1.是否測試流程沒有走完就報錯了(有可能自動測試邏輯裏面有閉環?)。3.其他原因(業務邏輯bug,JDKbug,測試工具bug)

  • 上一篇:北京軟件外包公司是怎麽收費的
  • 下一篇:淺談app源代碼2.6
  • copyright 2024編程學習大全網