首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

OOM分析——异常使用Servlet API导致内存溢出

2014-01-05 
OOM分析——错误使用Servlet API导致内存溢出请先前往《Spring内存溢出问题》查看问题,大体问题就是突然间内存

OOM分析——错误使用Servlet API导致内存溢出

请先前往《Spring内存溢出问题》查看问题,大体问题就是突然间内存飙升,且CPU使用率非常高。

?

问题分析

通过内存dump分析发现内存中某个key会有几百万个,而且观察这些key会发现有时候是org.springframework.web.servlet.DispatcherServlet.LOCALE_RESOLVER,有时候又变成org.springframework.web.servlet.DispatcherServlet.THEME_RESOLVER,每次可能不一样。

?

这个key是springmvc放到request中的属性key,而且一个key不可能放到request多次啊,因为request attributes本身通过HashMap存储,且线程不安全;造成这个问题的能想到的就是线程绑定变量泄露/并发操作request。

?

但是问题通过观察应用,没有使用ThreadLocal模式,那么唯一可能就是并发操作request属性造成的。

?

另外,通过观察日志,发现如下异常:

    D     D 
可以看看翻译的servlet规范

热点排行