有没有办法禁用 Tomcat 内存限制?

有没有办法禁用 Tomcat 内存限制?

在 /etc/tomcat6/tomcat6.conf 文件中,JAVA_OPTS 配置行使我能够设置 Tomcat 的内存限制。

例如:

JAVA_OPTS="-Xms256M -Xmx1024M -XX:MaxPermSize=256m -XX:PermSize=128m"

有没有办法完全禁用 Tomcat 的内存限制?我希望 Tomcat 利用所有可用内存 - 我不想用这些参数人为地限制 JVM。

或者说,把这些限制设得很大会有什么害处吗?

答案1

这实际上与 Tomcat 无关,但每个 Java 应用程序都必须处理这个问题。网上有很多资源,例如:

http://javarevisited.blogspot.de/2011/05/java-heap-space-memory-size-jvm.html

答案2

您必须指定实际的内存量。

但是,如果将所有系统内存都分配给 JVM,则实际机器本身将无用武之地,因此很可能会出现系统崩溃或性能非常差的情况。此外,如果唯一的解决办法是向 JVM 投入更多内存,您可能需要查看更好、更优化的代码并进行实际分析以找出问题区域。

答案3

我要提醒大家,不要不设置这些,尤其是在发生内存泄漏的情况下——这可能会占用系统中的大部分(全部?)内存。此外,如果发生垃圾收集,如果不检查内存使用情况,应用程序的暂停时间可能会变得不可接受。

JVM 的大小取决于很多因素:应用程序的“占用空间”、服务器上可用的 RAM、服务器上正在运行的其他进程等。从长远来看,如果您使用一些负载测试/分析工具来分析应用程序、检查垃圾收集日志、服务器资源消耗等,并调整这些设置,而不是忽略它们,您会更开心。在我看来,您应该运行一个精简、经过良好调整的应用程序(-:

相关内容