Servlet 会话属性大小和生命周期

Jim*_*oto 5 java session servlets

1) 应附加到会话的对象的可接受大小范围是多少?如果我附加一个可以是 5k 的对象,并且在任何给定时间我都有 10k 有效会话,那么 50MB 的内存对我来说似乎是可以接受的。这是解决该问题的有效方法吗?还是还有其他重大问题?

2)这可能是一个愚蠢的问题,但是如果我将一个对象附加到一个生命周期为 2 周的会话,我可以访问该属性,就好像它在整个会话期间都在内存中一样吗?

3)有什么理由不总是将会话信息保存到数据库中?

Tre*_*man 3

  1. 可接受的大小取决于您的用例和并发会话数。如果您的会话持续 2 周,那么可以想象您可能有大量并发会话,但如果您的预期最大值为 10k,那么 5k 会话对象应该没有问题(如您的计算所示)。

  2. 只要您拥有对会话对象的引用(或能够获得此类引用),那么数据就会保留在会话中。请记住,您的会话对象必须是可序列化的。

  3. 出于性能原因,您可能不希望将所有会话数据持久保存到数据库中,尤其是在可以轻松重新创建会话数据的情况下。