论坛首页 Web前端技术论坛

分享下ext异步调用产生的OutOfMemoryError错误

浏览 1172 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-10-29   最后修改:2009-10-29
我们的系统前端基于ext的。后台是struts2
近段时间经常发生内存耗尽的错误,发生的时间不定,有的在操作过程中,有时候放着不动就报错:
-------------------------------
2009-10-27 5:23:02 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.OutOfMemoryError: Java heap space

------------------------------

这个问题相当奇怪也严重,这里分享下排查这个问题的经过:

1 jprofiler监控启动的tomcat
2 打开首页,首页正常显示
3 这时查看内存情况,发现一个list一直占用50M内存,
4 寻找此到此list调用的action,最终找到了原因

原来此调用时一个异步的调用,里面有个sql由于限定条件错误,执行会比较耗时,会取出相当大的记录,如果此记录来生成json格式返回则直接把堆内存耗尽,故出现OutOfMemoryError,
由于GridPanel异步调用数据当timeout后会不再加载,页面看起来似乎没有错误,其实后台仍然在执行中,这个时间差造成我们判断上的误区。

不过同时我也发现了jprofiler果然是大杀器,功能强!系统调优的好帮手
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics