十五年测试老手,长期负责WEB\APP 项目测试,目前主要负责团队管理工作。
OOM分析
上一篇 /
下一篇 2014-05-25 20:59:58
/ 个人分类:java性能分析
之前在JVM调优中介绍过相关的OOM发生的原因常见的有以下几种:
.v3GeG0i3eGA01.StackOverflowError:
L,}HzH'x#E0java.lang.StackOverflowError错误表示JVM栈溢出,出现这个错误的原因一般都是递归的层次太深,或者无限的递归造成的.51Testing软件测试网iods6f1J
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 CW@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!NQ H0首先可以根据树型图反映出来的内存使用情况,查找具体的某个对象的引用情况,即:当你发现某个该释放掉的对象没有释放,就可以看一下哪个实例在引用它,找到了根即找到了溢出点。
(I+J^:F(ho._+j5|051Testing软件测试网*U$]#R"N&q"Yv0X`p
然后根据业务代码进行原因分析,一般常见的结果为循环引用,Array,String Builder,List等对象的释放问题,这里又不得不说的JDK的finalized并不是写了就一定会执行的
e\+Jg-~-z/n*?0 51Testing软件测试网jeo9aHF {s9t
51Testing软件测试网}"o'Xv+A f.MT
相关阅读:
- 测试总结及分析报告模板 (晨之晓, 2010-7-09)
- 性能测试(并发负载压力)测试分析-简要篇(转) (zxk739720309, 2010-7-10)
- 新人在试用期中常犯的毛病,你有吗? (51jobber, 2010-9-10)
- LoadRunner执行测试所报错误分析 (gzhuangwei, 2011-3-09)
- LoadRunner-Controller-Windows Resources图表监视不到服务器的性能参数【转】 (gzhuangwei, 2011-3-09)
- cs/css架构应用的软件性能测试模型分析 (fendoour, 2011-7-11)
- 性能测试的流程 (零测试, 2011-10-23)
- LR性能测试分析 (zengli_ming, 2013-5-15)
- 服务器监控性能指标分析 (尚云鹏, 2014-1-15)
- DynaTrace Ajax前端性能分析工具 (fairylly, 2014-2-08)
收藏
举报
TAG:
分析