session占用内存计算

应用程序和会话作用域内的所有对象都将在服务器进程中占有内存。

® 应用程序作用域对象占用内存数:你产生的全局对象数*对象大小。

® 计算session作用域中占用内存的方法:

会话作用域内的对象数目取决于当前会话的数目,所以除了每个对象的大小外,你

还需要知道当前有多少个用户,以及一个会话将持续多长时间。

例:以购物车为例,购物车内有3件产品,

i) 单个用户购物车对象占用服务器内存量

3*8 8=32个字节

3件产品乘以每一件产品对象的大小,加8是因为保存产品的集合对象引

用也需要一些额外的开销

ii) 假设该网站每小时有10位用户来购物,会话默认有效期是30分钟,所以共有10个活动的用户和10个已经不再活动得到会话,总共20个会话。内存占用量:

20 * 56 =1120个字节

56个字节是每个会话所需要的字节。32 24

iii) 如果每小时2000个用户,内存占用量

4000 * 56 = 220k字节

iv) 以上计算,只是按对象引用来计算一个对象引用的大小为

8字节。如果会话中保存一些大对象,例如大的POJO,假设每个对象10KB,

那么4000个会话就占用40M内存空间(有点大噢)。

® 控制服务器内存提示:

i) 会话中知保存真正需要保存的对象

ii) 会话有效期设成比默认值短

iii) 提供一种显式地结束会话的方法,如“注销”功能,或当某件事完成后,使会话失效,可以使用HttpSession invalidate()方法,当某个会话失效时,可以使得所有的对象被回收。

注:Java中一个对象引用的大小为8字节


你可能感兴趣的:(应用服务器,活动)