来自UncaughtExceptionHandler的Tomcat 7 OutOfMemoryError

And*_*dre 6 tomcat out-of-memory tomcat7

好的,所以我最近搬到了一台全新安装Win7 Pro的新电脑

我从旧PC上复制了所有旧文件和文件夹

我将我的Tomcat 7文件复制到新PC

但是现在当我尝试启动它时,我得到了这个错误

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "http-bio-8080-exec-2"
Run Code Online (Sandbox Code Playgroud)

我已经无处寻找解决这个问题的方法,发现了数百种不同的解决方案,但没有人帮助过我

什么可能导致这个错误?(我正在使用从旧PC复制的完全相同的tomcat文件,以及仍在旧PC上运行的完全相同的项目)

注意:

我设置的环境变量与旧计算机上的环境变量完全相同.

我正在使用我以前在PC上使用的完全相同的webapp(所以它不能用于内存泄漏或项目出现问题)

War*_*Dew 8

我收到了相同的错误消息,虽然从Web上的其他来源可能会由于堆空间用尽而导致错误消息,而不仅仅是由于耗尽了permgen空间.

我需要从命令行修复此问题,而不是使用图形界面.为此,我<tomcat install directory>/bin/setenv.sh在内容中添加了一个新文件:

CATALINA_OPTS="-Xms4096M -Xmx4096M -XX:PermSize=512M -XX:MaxPermSize=512M"
Run Code Online (Sandbox Code Playgroud)

如果您有现有setenv.sh文件,请将其添加到该文件中.使用适合您的安装的任何数字 - 我的服务器有96GB的内存,所以我可以为Tomcat支付4GB.

如上所述catalina.sh,您应该将其添加到setenv.sh而不是catalina.sh为了将此本地修改与基本catalina.sh脚本分开.您应该更改CATALINA_OPTS而不是JAVA_OPTS仅为实际的Tomcat服务器需要更大量的内存; 更改JAVA_OPTS将需要关闭进程的内存,如果系统内存不足,可能会干扰服务器的关闭.


Öme*_*alı 0

您可以将它们分配给JAVA_OPTS位于catalina.sh(tomcatPath/bin) 内部的变量:

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 
-server -Xms1536m -Xmx1536m
-XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m 
-XX:MaxPermSize=256m -XX:+DisableExplicitGC"
Run Code Online (Sandbox Code Playgroud)

另一种可能性是内存泄漏。您可以检查此处以排除内存泄漏问题