假设我们在淘宝中用户过多的时候,虽然 session 没有下限,但 session 的数量就会不断增多。之后就会导致内存无法承受,此时就会有一些 session 长时间都没有活动。服务器启动时就会将这些很久没有活动的 session 放到硬盘上,让内存给空出来。就会使得很多的session被保存到硬盘上以此来空出内存。而即便之后需要再次访问 ession,它就会再次从硬盘中将 session给放回来使用。这样用户就不会感觉到自己掉线了。这个过程就是 session 的钝化和活化。
钝化
Tomcat 会在 session 从时间不被使用时钝化 session 对象,所谓钝化 session ,就是把 session 通过序列化的方式保存到硬盘文件中。
活化
当用户再使用 session 时,Tomcat 还会把钝化的对象再活化 session,所谓活化就是把硬盘文件中的 session 在反序列化回内存。当 session 被 Tomcat 钝化时, session 中存储的对象也被纯化,当 session 被活化时,也会把 session 中存储的对象活化。
钝化和活化 session,其实就是使用序列化和反序列化技术把 session 从内存保存到硬盘,和把 session从硬盘加载到内存。
配置文件中如何配置session钝化
<Context>
<Manager claseName="org.apache.catalina.session.PersistentManager"
maxIdleSwap="1"> <!--如果session一分钟没有使用会被钝化-->
<store className="org.apache.catalina.session.Filestore"
directory="mysession">
</Manager>
</Context>