主页 > 知识库 > 一个JSP页面导致的tomcat内存溢出的解决方法

一个JSP页面导致的tomcat内存溢出的解决方法

热门标签:四川保险智能外呼系统商家 商洛电销 地图标注线上教程 电销机器人是有一些什么技术 北票市地图标注 高德地图标注样式 电销机器人好卖么 杭州ai语音电销机器人功能 杭州语音电销机器人软件

今天新能测试组的同事找我看一个奇怪的现象。一个tomcat应用,里面只有一个单纯的jsp页面,而且这个jsp页面没有任何java代码(想用这个jsp页面测试在她的服务器上的一个tomcat的最大QPS)。但是用loadrunner压测了几分钟之后,分配了1024M堆内存的tomcat居然包heap space outofmemory!这个页面的代码如下:

复制代码 代码如下:

%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
html>
head>
meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
title>test/title>
/head>
body>
p>hello world!/p>
/body>
/html>

最初的分析是,一个JSP页面撑死了会产生一个对应的java文件,然后这个java文件编译成class文件,加载到内存里面去。也就是会有一个class对象会被加载到PermGen space里面去。跟heap space是没有任何关系的。但是最后报的是对空间溢出。于是猜测肯定是每请求一次jsp页面就会生成一个对象。

百度了一下,发现每请求一次JSP页面,会产生一个session对象。在tomcat的web.xml里面有这么个配置:

复制代码 代码如下:

session-config>
session-timeout>30/session-timeout>
/session-config>

也就是说每请求一次jsp页面,会产生一个session对象,并且这个对象30分钟后才过期。我们计算了下当时的QPS是5000,也就是说每秒钟产生5000个session对象。每分钟产生300K个对象,session是个map对象,比较大,这样很快就会把内存撑爆。

解决办法如下:

1.在page指令里添加session=false。

2.把session的过期时间设成0。

现在她的loadrunner跑的很稳定。工作之后就再也没有用过jsp了,查jsp的问题还是比较费力

您可能感兴趣的文章:
  • linux解决Tomcat内存溢出的问题
  • 有关tomcat内存溢出的完美解决方法
  • TOMCAT内存溢出及大小调整的实现方法
  • tomcat6.0 /7.0安装版内存溢出设置方法
  • Tomcat内存溢出分析及解决方法
  • tomcat内存溢出问题解决经历

标签:贵州 青岛 云浮 宿州 西藏 红河 丹东 江西

巨人网络通讯声明:本文标题《一个JSP页面导致的tomcat内存溢出的解决方法》,本文关键词  一个,JSP,页面,导致,的,tomcat,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《一个JSP页面导致的tomcat内存溢出的解决方法》相关的同类信息!
  • 本页收集关于一个JSP页面导致的tomcat内存溢出的解决方法的相关信息资讯供网民参考!
  • 推荐文章