在我的Java项目web.xml中,会话超时参数设置为5分钟。5分钟后,所有会话对象杀死或保留内存?
我曾经有过同样的问题,所以我检查了tomcat源代码。我没有检查所有的东西,但我会尽可能多地检查。有一个StandardSession类,它有许多方法,其中两个方法与此相关。
- 其中一个是
expire()
,它将isValid变量更新为false。 - 有另一种方法
recycle()
清除所有属性并重置许多属性,如lastAccessedTime
,maxInactiveInterval
等。
现在我假设这些方法在会话超时时被调用。所以它不会杀死它们,而是回收它们。
我进入会话管理器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());
}