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

6qqygrtg  于 2022-11-24  发布在  Java
关注(0)|答案(4)|浏览(123)

我正在研究Java内存堆分配,我认为我做了一些事情,不仅为任何特定的tomcat文件夹设置了内存堆分配,而且为整个系统设置了内存堆分配,因为我不能在Spring中运行我的应用程序,也不能使用我一直用于测试的自定义tomcat文件夹。正在初始化Spring根Web应用程序上下文””。
我不太清楚如何在Linux命令行上通过执行"export CATALINA_OPTS="-Xms2000m -Xmx4500m""JAVA_OPTS="-Xms2000m -Xmx4500m -XX:MaxPermSize=4500m"之类的操作来设置此参数
我想我不小心把我的云服务器的设置(它有更高的内存量),所以我给了它更多的内存分配比我的整个系统有。
如果有人能让我知道我是否有可能这样做,如果这可能导致问题,以及我如何从我的系统中获得关于当前分配的输出,以便我可以检查/更改它,我将不胜感激。我已经尝试了"export CATALINA_OPTS="-Xms2000m -Xmx4500m",但它仍然不适合我。
我想把所有东西都恢复到默认设置。我通常在tomcat文件夹的/bin/ www.example.com文件中设置内存堆分配startup.sh,但我想我已经忘记了这一点,我正在命令行上试验。
谢谢

zrfyljdw

zrfyljdw1#

检查Tomcat的所有日志文件。可能是Spring WebApplicationContext的启动遇到了错误,但将其记录在了其他位置。
对于Tomcat来说,将最大堆大小设置得太大听起来像是在转移注意力。如果初始堆大小参数大于系统上的最大内存大小,Java进程将立即失败- Tomcat将无法初始化Spring应用程序。

jutyujz0

jutyujz02#

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

zzoitvuj

zzoitvuj3#

调试器不就是用来查找bug的吗?为什么不简单地在调试模式下启动Tomcat,等到它“挂起”,然后通过挂起相关的线程并查看堆栈跟踪来了解它正在做什么呢?
或者更简单,在应用程序挂起后执行“线程转储”?

2izufjch

2izufjch4#

对我来说,这是另一项无法获得的服务

  • Spring一次又一次地尝试着到达,等待着,直到它超时
  • 一旦我启动了另一个服务,它就自动工作了。

相关问题