十五年测试老手,长期负责WEB\APP 项目测试,目前主要负责团队管理工作。

OOM分析

上一篇 / 下一篇  2014-05-25 20:59:58 / 个人分类:java性能分析

文章来源
  • 文章来源:【转载】

之前在JVM调优中介绍过相关的OOM发生的原因常见的有以下几种:

.v3GeG0i3eGA0

1.StackOverflowError:
L,}HzH'x#E0java.lang.StackOverflowError错误表示JVM栈溢出,出现这个错误的原因一般都是递归的层次太深,或者无限的递归造成的.51Testing软件测试网i ods6f1J
2.OutOfMemoryError: Java heap space:
;N7@1_*u'tj/f,w6^ s0java.lang.OutOfMemoryError: Java heap space这个错误表示JVM的新生代和老生代的内存不足。出现这个错误说明应用程序出现了内存溢出或者程序所需要的内存大于JVM的内存设置了。
i/U]9~(Z`m03 OutOfMemory:PermGen space:51Testing软件测试网g5yc C W@M y
java.lang.OutOfMemory:PermGen space错误是由Perm space空间不足。一般出现这个错误是由加载了太多的类或者大量使用了动态代理造成的。如果出现了这个错误,我们可以将Perm空间调大一点。

-u5AI)]~9^I0

今天听了淘宝同学有关OOM的讲座,将之前有疏漏的地方加以补充。
#me2i1u,@A$j0一般发生OutOfMemoryError: Java heap space的时候,我们还需要仔细的研究下是什么原因造成的。我们一般会选用jprofile或者btrace进行,java run-time跟踪,以jprofile为例子,它支持WAS,JBOSS,WebLogic,Tomcat等主流的IHS。
/a5K'x(q!N Q H0首先可以根据树型图反映出来的内存使用情况,查找具体的某个对象的引用情况,即:当你发现某个该释放掉的对象没有释放,就可以看一下哪个实例在引用它,找到了根即找到了溢出点。

(I+J^:F(ho._+j5|0

51Testing软件测试网*U$]#R"N&q"Yv0X`p

然后根据业务代码进行原因分析,一般常见的结果为循环引用,Array,String Builder,List等对象的释放问题,这里又不得不说的JDK的finalized并不是写了就一定会执行的

e\+Jg-~-z/n*?0

 51Testing软件测试网jeo9aHF {s9t

 51Testing软件测试网}"o'Xv+Af.MT


TAG: 分析

 

评分:0

我来说两句

Open Toolbar