session

 

JSP的Request session的有效时间应合理设置

http://www.sina.com.cn 2008年07月04日 13:57    《程序员》
来源:BlueDavy之技术Blog - BlogJava

之前写了个简单的jsp做压力测试,没想到出现的一个问题是当压力比较大的情况,运行比较久的话会出现一个现象,就是jvm的内存几乎被耗尽,用jprofiler查看会发现是有一个ConcurrentHashMap对象的内存一直在增长,而且没有释放的迹象,随后进入Debug模式,跟踪查找都有谁new了ConcurrentHashMap,因为测试场景中是个非常简单的jsp页面,发现只有jsp的Request session会创建这个ConcurrentHashMap,很久没写jsp了,猜测是request session的默认超时时间太长,所以导致高压力下(200并发,总共连续访问50万次,jvm内存1G)会出现内存一直没有回收的问题,后来打印了一下request session的默认超时(AS是jboss 4.2.2),是半小时,如果这样的话确实是会有造成上面内存一直被占用的现象。

这个jsp是这样的,非常简单:

<%@ page contentType="text/html; charset=GBK" %>
Just Test.造成这个问题的具体原因需要结合session的机制来讲了,讲session机制的文章相当多,感兴趣的话可以参见以下两篇文章:
http://www.builder.com.cn/2007/1123/650439.shtml
http://bbs.chinaunix.net/viewthread.php?tid=1178466

这个问题怎么说呢,只能说session用的时候要非常注意吧,毕竟是消耗内存资源的,而且通常session都不会去配置成即时invalidate,都是有一定的超时时间的,在这样的情况下,如果在超时时间范围内出现高访问量的话,是很有可能会造成问题的,因此超时时间的合理设置非常重要。

如果页面上不需要session的话,可以这么做:

<%@ page session="false" %>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值