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

 更新时间:2014年10月30日 17:31:00   投稿:whsnow  
每请求一次jsp页面就会生成一个对象,这篇文章主要介绍了一个JSP页面导致的tomcat内存溢出的解决方法,需要的朋友可以参考下

今天新能测试组的同事找我看一个奇怪的现象。一个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的问题还是比较费力

相关文章

  • jsp学习之scriptlet的使用方法详解

    jsp学习之scriptlet的使用方法详解

    这篇文章主要介绍了jsp学习之scriptlet的使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • jsp从数据库获取数据填充下拉框实现二级联动菜单的方法

    jsp从数据库获取数据填充下拉框实现二级联动菜单的方法

    这篇文章主要介绍了jsp从数据库获取数据填充下拉框实现二级联动菜单的方法,涉及jsp数据库的操作及联动菜单的构造技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • J2ME/J2EE实现用户登录交互 实现代码

    J2ME/J2EE实现用户登录交互 实现代码

    用手机客户端进行登录服务器,然后返回消息进行交互.
    2009-07-07
  • JSP页面中文参数的传递(get和post方法分析)

    JSP页面中文参数的传递(get和post方法分析)

    JSP页面中文参数传递在实际的编程中是十分有用的,get和post方法更是十分的常见,那如何掌握好这些方法呢?本文将会向你实现这些方法的具体事宜
    2013-08-08
  • jsp Hibernate入门教程

    jsp Hibernate入门教程

    如果您是在同一个Session中取出数据并想要马上进行更新,则只要先查询并取出对象,透过setXXX()方法设定好新的值,然后呼叫session.flush()即可在同一个Session中更新指定的数据
    2008-11-11
  • JSP教程(三)--JSP中”预定义变量”的使用

    JSP教程(三)--JSP中”预定义变量”的使用

    JSP教程(三)--JSP中”预定义变量”的使用...
    2006-10-10
  • jsp实现ie中的后退方法

    jsp实现ie中的后退方法

    下面小编就为大家带来一篇jsp实现ie中的后退方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • jsp基础速成精华讲解

    jsp基础速成精华讲解

    对于想学习jsp的朋友,这个可以说是个不错的入门指点。
    2009-01-01
  • jsp中定义和使用方法示例介绍

    jsp中定义和使用方法示例介绍

    在jsp中,如果需要处理复杂数据时,在上方定义一个java方法是很有效的解决方案,本文为大家讲解下jsp中如何定义及使用方法,感兴趣的朋友可以了解下
    2013-09-09
  • Java Web项目中连接Access数据库的配置方法

    Java Web项目中连接Access数据库的配置方法

    本文是对前几天的“JDBC连接Access数据库的几种方式”这篇的升级。由于在做一些小项目的时候遇到的问题,因此才决定写这篇博客的。昨天已经将博客发布了,但是后来经过一些验证有点问题,所以今天改了一下重新的发布了
    2013-05-05

最新评论