有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java、Spring、Tomcat挂起在“信息:初始化Spring根WebApplicationContext”上,我想我更改了整个系统允许的内存堆

我在玩Java内存堆分配,我想我做了一些事情,不仅为任何特定的tomcat文件夹,而且为整个系统设置了内存堆分配,因为我无法在Spring中运行我的应用程序,也无法使用我一直在测试的自定义tomcat文件夹。当我尝试运行应用程序时,它只是挂起在“INFO:initializationspringroot-WebApplicationContext”处

我不完全清楚如何通过执行"export CATALINA_OPTS="-Xms2000m -Xmx4500m""JAVA_OPTS="-Xms2000m -Xmx4500m -XX:MaxPermSize=4500m"之类的操作在Linux命令行上设置这一点

我想我无意中为我的云服务器(内存量更大)设置了一些设置,所以我给了它比整个系统更多的内存分配

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

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

谢谢


共 (3) 个答案

  1. # 1 楼答案

    检查Tomcat的所有日志文件。SpringWebApplicationContext的启动可能遇到错误,但将其记录在其他地方

    对Tomcat来说,将最大堆大小设置得太大听起来像是在转移注意力。如果initial heap size参数大于系统上的最大内存大小,Java进程将立即失败—Tomcat将无法初始化Spring应用程序

  2. # 2 楼答案

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

  3. # 3 楼答案

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

    或者更简单,在应用程序挂起后进行“线程转储”