Java,Spring,Tomcat,挂起在“INFO:初始化Spring root WebApplicationContext”,我想我改变了整个系统允许的内存堆

时间:2011-02-28 20:33:45

标签: java spring tomcat memory-management heap

我正在玩Java内存堆分配,我认为我做了一些事情,不仅针对任何特定的tomcat文件夹,而且针对整个系统,因为我无法在Spring中运行我的应用程序或使用自定义tomcat文件夹我一直在用于测试。当我尝试运行该应用程序时,它只是挂起“INFO:初始化Spring root WebApplicationContext”。

我不清楚我是如何通过执行"export CATALINA_OPTS="-Xms2000m -Xmx4500m""JAVA_OPTS="-Xms2000m -Xmx4500m -XX:MaxPermSize=4500m"

等操作在Linux命令行上设置此功能的

我想我不小心把我曾经想要的设置放在我的云端服务器上(它有更高的内存量),所以我给它的内存分配比我的整个系统都多。

如果有人能告诉我是否有可能我这样做,如果这可能导致问题以及如何从我的系统获得当前分配的输出以便我可以检查/更改它,我已经尝试"export CATALINA_OPTS="-Xms2000m -Xmx4500m"但它仍然不适合我。

我想将所有内容恢复为默认设置。我通常在tomcat文件夹的/bin/startup.sh文件中设置内存堆分配,但我想,我已经忘记了这一点,并在命令行上试验了一些东西。

由于

3 个答案:

答案 0 :(得分:5)

检查Tomcat的所有日志文件。 Spring WebApplicationContext的启动可能会遇到错误,但会将其记录到别处。

为Tomcat设置最大堆大小听起来像是一个红色的鲱鱼。如果初始堆大小参数大于系统上的最大内存大小,则Java进程将立即失败 - Tomcat将无法初始化Spring应用程序。

答案 1 :(得分:1)

找不到调试器的bug是什么?为什么不简单地在调试模式下启动Tomcat,等到它“挂起”,然后通过挂起相关线程并查看堆栈跟踪来找出它在做什么?

甚至更简单,一旦应用程序挂起,就进行“线程转储”?

答案 2 :(得分:1)

如果从IDE运行服务器超时,请查看是否可以增加服务器超时。从命令行,你将不得不等待。 如果问题仍然存在,请尝试清理/重新加载应用程序