为了性能测试需要,一个tomcat应用,里面只有一个单纯的jsp页面,而且这个jsp页面没有任何java代码(想用这个jsp页面测试在她的服务器上的一个tomcat的最大QPS)。但是用loadrunner压测了几分钟之后,分配了1024M堆内存的tomcat居然包heap space outofmemory!这个页面的代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<html>
<head>
<body>
    <p>hello world!</p>
</body>
</html>

在测试过程中,发现jvm堆内存有泄露情况!这个实在让人费解啊…经过百度发现装载JSP的tomcat每接受一次请求,就会为这个请求开一个Session,而这个Session所占有的内存要经过一段时间才能释放!

进行以下调整,

1. JSP的编译指令加入session的配置:

<%@ page contentType="text/html;charset=UTF-8" language="java"  session="false" %>

2. 在tomcat 的 web.xml中配置session的过期时间为0

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


jsp空页面导致的jvm heap溢出插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.choupangxia.com/2022/03/03/jsp-jvm-heap/