会话超时参数是否终止对象或对象是否保留在内存中?

时间:2014-07-07 16:09:29

标签: java session-cookies session-timeout

在我的java项目web.xml中,会话超时参数设置为5分钟。 5分钟后,所有会话对象终止还是仍然是内存?

1 个答案:

答案 0 :(得分:0)

我曾经遇到过同样的问题所以我检查了tomcat的源代码。我没有检查所有内容,但我会尽我所能。有一个StandardSession类有很多方法,两种方法都与此有关。

  • 其中一个是expire(),它将isValid变量更新为false。
  • 还有另一种方法recycle()可清除所有属性并重置许多属性,例如lastAccessedTimemaxInactiveInterval等。

现在我假设在会话超时时调用这些方法。所以它不会杀死它们,它会回收它们。

我进入了会话管理器ManagerBase,看它是不是它的功能。每当新请求到来时,都会调用以下方法(在此之前几乎没有其他方法调用)。

/**
 * Get a session from the recycled ones or create a new empty one.
 * The PersistentManager manager does not need to create session data
 * because it reads it from the Store.
 */
@Override
public Session createEmptySession() {
    return (getNewSession());
}