java设置native内存大小_如何定位native内存泄露问题?

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

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问题分析:  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,JDK bug,测试工具bug)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值