1

我使用 Apache tomcat 7.02 作为服务器。我使用 sphinx4 创建了一个应用程序并将其部署在 apache tomcat 服务器上。由于这个 Sphinx4 应用程序需要大量内存来执行。所以为此我分配了很多内存作为 java 堆空间(出口 CATALINA_OPTS="-Xms1536m -Xmx1536m")。我部署服务器的服务器是一个 64 位系统,上面有 Debian Lenny,还有 2Gb 的 RAM。我创建了一个 Servlet,将数据发布到它,得到结果......当我为 10 个用户运行它时,它需要大约 8 分钟来处理,但如果我同时为 100 个用户运行它,那么它会在 tomcat 状态上显示这个

可用内存:37.0 MB 总内存:1484.81 MB 最大内存:1484.81 MB

我也尝试使用 System.gc(),但它没有 gud。那么有什么方法可以检查 JVM 的内存状态并在需要时释放它?

4

1 回答 1

4

您需要确定资源在哪里使用。我建议您使用内存分析器并更改程序以消耗更少的内存。

如果您使用的是 64 位 JVM,则可以使用-XX:+UseCompressedOops来减少内存消耗(它使用 32 位引用而不是 64 位引用)

编辑:如果您无法调整您的应用程序,则可能值得考虑升级您的服务器。24 GB 服务器的成本约为 1,800 英镑,并且可能允许您在不更改代码的情况下扩展到 1000 个用户。;)

于 2011-02-09T08:36:24.473 回答