2011-11-15 123 views
2

我们正在使用Tomcat/J2EE应用程序。我可以在Java Session中存储多少数据?

在这个应用程序中,我们在会话中存储了很多数据,我想知道我们可以存储多少数据而没有问题。

什么是最小限制? Tomcat的记忆? JVM?

我该如何计算是否可以存储200k字符串?

+1

嗯......为什么?从设计的角度来看,在会话对象中存储这么多的String数据听起来很腥意。当然,它提出了可扩展性问题。 (按现场会话数量乘以400kbytes +) –

+0

@StephenC您说得对。这是由于数据库设计不好,我们现在无法改变。我们正在探索“解决方法”,其中之一就是将大量数据存储在内存中。我正在考虑将这些数据存储在内存中是个坏主意,但我也希望在表格中添加一些数字 –

回答

1

对于#1 - 您可以存储与分配给JVM的堆大小相同的数据。当然,tomcat在JVM内部运行,所以它也会使用分配的内存的一部分。

对于#2 - 它确实取决于字符串的大小 - 每个unicode字符需要2个字节。取平均字符串大小,乘以200k,然后确保分配了足够的内存。

+3

“您可以存储与分配给JVM的堆大小相同的数据”*除以预期的并发会话数。*或者可能是*最多*期望的会话数量...... – EJP

1

Tomcat在JVM中运行。所以如果你有一个32位的jre,你可以有最大的堆大小约为1,7Gb。如果你想要更多,你应该切换到64位jre。

关于字符串分配,内部java字符编码是Unicode,所以我认为它是UTF-8。为了节省空间,您可以使用zip压缩这些字符串并将它们保存为文件。

相关问题