问题描述
在一次项目非功能压力测试过程中。发生内存溢出现象。
通过mat工具分析dump,MemorySessionContext和MemorySessionData占用内存居高不下。
weblogic weblogic.servlet.internal.session.MemorySessionContext
weblogic weblogic.servlet.internal.session.MemorySessionData
MemoryAnalyzer 打开失败,修改内存
原因分析以及解决方案
session对象没有及时回收。
解决方案1
配置文件web.xml 设置 session-timeout:session失效时间。
解决方案2
weblogic.xml
通过各种博客文章的参考,一般尝试方案1就能解决问题。 不行可以尝试方案二
我们项目中的问题 :在Servlet中写下如下代码造成的。
ServletContext servletContext = request.getSession().getServletContext();
ApplicatiionContext ctx = WebApplicatiionContextUtils.getWebApplicationContext(servletContext );
ctx.getBean("xxx");