Java中Session对象的垃圾回收是如何工作的?

3

在JSP中,会话对象(Session object)的垃圾收集是如何工作的?每个会话过期后是否都会被垃圾收集?如何更好地处理Session对象的内存?

2个回答

7
垃圾收集器只会回收代码中没有硬引用的对象。HttpSession对象由servlet容器的内部代码引用。当会话过期时,servlet容器的内部代码将取消引用它,并在需要时进行垃圾回收。
你完全不需要担心这个问题。这一切都已经为您完成了。
如果您实际的问题是过多的内存使用和/或内存耗尽,则问题的原因肯定是其他地方,并且必须采用不同的方法解决。基本上,您不应引用比必要更多的对象。

0
每次访问或创建会话对象时,计时器都会被重置。要设置计时器的值,您需要启用会话超时属性。
最终,如果用户没有连接,该会话的会话计时器将过期,然后它将从Servlet容器的会话集合中删除,并像任何其他对象一样受到垃圾回收的影响。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接