【发布时间】:2010-12-10 15:48:14
【问题描述】:
除了以编程方式测量存储在会话中的每种数据类型(每个对象由其组成)的大小之外,是否有一种干净且简单的方法来测量它?
【问题讨论】:
标签: java tomcat httpsession
除了以编程方式测量存储在会话中的每种数据类型(每个对象由其组成)的大小之外,是否有一种干净且简单的方法来测量它?
【问题讨论】:
标签: java tomcat httpsession
有一个 SessionSize 类 here 具有返回传递给它的 HttpSession 对象大小的函数,它是 Java Web Parts 库的一部分。
【讨论】:
会话内容必须是可序列化的。所以序列化它并查看生成的字节数组的大小。
它不等于内存大小,但可以作为它的粗略表示。
附:请注意,临时字段(如果有)将被排除在外。
【讨论】:
MessAdmin 允许您计算 HttpSession 的大小,尽管目前尚不清楚它是如何calculates the size of transient objects。
看起来,获取 HttpSession 对象的近似大小在生产中是徒劳的,而对于受控环境,可能会获得更准确的大小。
需要注意的一点是,由于字符编码的变化,序列化会话对象的大小必然会不准确 - Java 中的字符串以 UTF-16 格式存储,而输出流可能采用不同的编码。关于为什么在 Java 中计算对象的大小是一个问题的更多详细信息,可以在 JavaWorld article 中找到。
【讨论】: