goflyboy0451 2010-10-19 14:12
浏览 380
已采纳

如何定位native内存泄露问题?

[b]环境:[/b]WinXP + SUN JDK 6.0 + RCP + AutoMan(Rational Functional Tester)
[b]问题描述:[/b]

  测试人员用AutoMan(测试部自主开发的一套Java自动化测试工具,封装IBM的RFT)对RCP应用程序进行GUI自动化测试.

运行一段时间后,程序出现异常:部分操作无法进行.异常日志如下:

java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Unknown Source)
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:387)
at com.huawei.unistar.quoter.framework.guide.internal.GuideDialog.run(GuideDialog.java:585)
at com.huawei.unistar.quoter.framework.guide.internal.GuidePage.needShowPage(GuidePage.java:99)
at com.huawei.unistar.quoter.framework.guide.internal.Guide.getStartingPage(Guide.java:123)
at org.eclipse.jface.wizard.WizardDialog.showStartingPage(WizardDialog.java:1173)

此时在任务管理器里面发现进程内存大小几乎达到1.3G

[b]问题分析:[/b]

  1,首先怀疑是JVM堆空间内存泄露.于是用jmap生成dump文件,使用MAT工具进行OOM分析,发现JVM堆空间使用情况良好(设置最大堆空间为512M,而程序出现问题时,堆空间也就使用了300M左右).

而且也没有发现内存泄露点.
  
  2,然后怀疑是自动化工具引起的native内存泄露.因此特地手工重复测试一遍,结果显示:程序运行良好,jvm堆空间大小一直稳定在一个区间;而且用工具分析,也没有发现内存泄露.
     
  根据上面两个步骤地分析,因此我们怀疑是自动化工具(或测试用例)引起的native内存泄露.苦于对AutoMan和RFT工具(无源码)的不了解,不好从java层面下手分析问题.

  所以想逆过来分析:从native内存着手,找出内存泄露的原因!

  烦请专家指点如何分析native内存?

  • 写回答

2条回答 默认 最新

  • uncontrolsheep 2010-10-20 11:15
    关注

    我觉得这种情况一般都是被测试场景的原因比较多一点。

    1.是否测试流程没有走完就报错了(有可能自动测试逻辑里面有闭环?)。
    2.有可能是多线测试环境程造成的并发环境下的原因。手工测试一般都是单线程逻辑的,而你说手工测试流程没有什么明显问题。
    3.其他原因(业务逻辑bug,JDK bug,测试工具bug)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 宇视监控服务器无法登录
  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)