【问题标题】:How much data can I store in Java Session?我可以在 Java Session 中存储多少数据?
【发布时间】:2011-11-15 09:09:07
【问题描述】:

我们正在使用 Tomcat/J2EE 应用程序。

在这个应用程序中,我们在会话中存储了大量数据,我想知道我们可以毫无问题地存储多少数据。

最低限制是多少? Tomcat的内存? JVM?

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

【问题讨论】:

  • 嗯...为什么???从设计的角度来看,在会话对象中存储这么多字符串数据听起来很可疑。当然,它提出了可扩展性问题。 (将 400kbytes+ 乘以实时会话数 ...)
  • @StephenC 你是对的。这是由于数据库设计不当造成的,我们现在无法更改。我们正在探索“变通办法”,其中之一是将大量数据存储在内存中。我正在考虑说将这些数据存储在内存中是个坏主意,但我也想在表格上放一些数字

标签: java session tomcat memory


【解决方案1】:

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

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

【讨论】:

  • “您可以存储与分配给 JVM 的堆大小一样多的数据”除以预期的并发会话数。 或者可能是 最大 数预期会话数 ...
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 2021-05-10
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多