- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
javalangutfMemryErrrunabletreatenewnativethrea内存泄漏分析.doc
问题现象】:
自动化用例跑了约三个多小时后,界面响应吋间长,界面出现500错误。之后再 点击时,页面重定向至首页。查看jboss下的server, log文件发现内存溢出的 OutOfMemory 异常。
出现的问题H志】: java. lang. OutOfMemoryRrror at java. util. zip. ZipFilc. open(Native Method) at java. util. zip. ZipEile. init(ZipEile.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存泄漏导致的堆栈溢出,通常的错误信息主要有以下几种。
java.lang.OutOfMemoryError: Java heap space
java.lang. OutOfMemoryError: PermGen space
java.lang. OutOfMemoryError: Requested array size exceeds VM limit
java. lang. OutOfMemoryRrror: 〈reason〉〈stack trace〉(Native method) 回复次数:1
楼得分:回复于:2010-12-27 16:06:51 而在出现内存泄露的机器上,其日志显示是无法创建本地 线程的原因所引起的。这里的异常信息是:
luozhangwen(我不懒一押宝党实习生)等级:java. lang. OutOfMemoryError: unable to create new native thread,对应上述内存溢出的第
luozhangwen
(我不懒一押宝党实习
生)
等级:
重新跑自动化,并中间使川“jstat - gcutil进程ID 1000 3 jstat. txt”命令,每隔3秒查看一下虚拟机堆 空间的回收情况。在运行了三个多小时后,发行 server, log种己经出现了该OutOfMemory的异常信息。 此时查看了 jstat. txt文件,发现从自动化斤始运行一直 到堆栈溢出,内存回收都很正常。全部垃圾回收时间花费 Z 5秒左右,且未有full gc,全为young gc的时间。 持久区(Perm)、年老区(Old),分别占用了 25%、19%左 右的空间。且使用“top”命令监测中间CPU和内存占用 都比较稳定,没有激增的现象。
使用“jmap -hito进程ID”查看内存对象统计,发现没
有业务逻辑相关的类异致的泄露问题。系统屮创建最多的 就是与Sting相关的char数组对象。这个也是正常情况, 排除程序级别的内存泄漏问题。也就是说堆栈溢出不是1 和2的两种情况。
此时再分析server, log种的日志信息,得知是无法创建 本地线程所致的问题。也就是说在压力环境丁拥有大量的 线程,或者本地内存耗尽吋,企图创建新的线程吋抛出。 而系统能创建的线程数的计算公式如下:
(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSizc) = Number of threads MaxProcessMemory指的是一个进程的最大内存 JVMMemory JVM 内存
ReservedOsMemory保留的操作系统内存
ThreadStackSize线程栈的大小
解决方法】:
针对无法创建更多本地线程的情况,调整线程桟的大小, 添加-Xss选项,设置为256k后再跑自动化,发现问题解 决。
JAVA_0PTS=〃-Xms2048M -Xmx2048M -Xmn512M -Xss256k -XX:PermSize=512M“*. ”
星期一早上到了公司,据称产品环境抛出了最可爱的异常一OutOfMemory,它是 这样来描述他自己的:
java.Iang.OutOfMemoryError: unable to create new native thread
而_氏这位仁兄竟然还堂而皇之地同时出现在丫 3个application里面,所有应用全部遭殃。
文档评论(0)