好的,所以我最近搬到了一台全新安装Win7 Pro的新电脑
我从旧PC中复制了所有旧文件和文件夹
我将Tomcat 7文件复制到新PC
但是现在当我尝试启动它时,我得到了这个错误
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "http-bio-8080-exec-2"
我无处寻找解决这个问题的方法,发现了数百个不同的解决方案,但没有人帮助我
任何可能导致此错误的想法? (我正在使用从旧PC复制的完全相同的tomcat文件,以及仍在旧PC上运行的完全相同的项目)
注意:
我设置的环境变量与旧计算机上的完全相同。
我正在使用我以前在PC上使用的完全相同的webapp(所以它不能用于内存泄漏或项目出错)
答案 0 :(得分:8)
我收到了相同的错误消息,尽管从Web上的其他来源可能会由于堆空间不足而导致错误消息,而不仅仅是由于耗尽了permgen空间。
我需要从命令行修复此问题,而不是使用图形界面。为此,我在<tomcat install directory>/bin/setenv.sh
添加了一个新文件,内容为:
CATALINA_OPTS="-Xms4096M -Xmx4096M -XX:PermSize=512M -XX:MaxPermSize=512M"
如果您有一个现有的setenv.sh
文件,请将其添加到该文件中。使用适合您的安装的任何数字 - 我的服务器有96GB内存,所以我可以为Tomcat支付4GB。
正如catalina.sh
中所述,您应该将其添加到setenv.sh
而不是catalina.sh
,以便将此本地修改与基本catalina.sh
脚本分开。您应该更改CATALINA_OPTS
而不是JAVA_OPTS
,以便仅为实际的Tomcat服务器需要更大的内存量;更改JAVA_OPTS
也需要关闭进程的内存,如果系统内存不足,可能会干扰服务器的关闭。
答案 1 :(得分:4)
我终于找到了答案:
转到tomcat bin文件夹
以管理员身份运行“tomcat7w.exe”
将此添加到Java选项卡中的java选项
-Xms3072M
-Xmx6144M
-XX:PermSize=512m
-XX:MaxPermSize=1024m
有关详情,请查看此链接
http://community.jaspersoft.com/wiki/configuring-tomcats-java-heap-size
答案 2 :(得分:1)
我通过在windows 7 tomcat 7中的catalina.bat中添加以下行来解决同样的问题。
set JAVA_OPTS =" -XX:PermSize=512m -XX:MaxPermSize=1024m"
我有4 GB RAM。
答案 3 :(得分:0)
您可以将它们分配到位于JAVA_OPTS
(tomcatPath / bin)内的catalina.sh
变量中:
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"
另一种可能性是可能存在内存泄漏。您可以在此处查看troubleshooting memory leaks。
答案 4 :(得分:0)
经过多次搜索后,我找到了这个解决方案。它运作正常。
设置JAVA_OPTS =%JAVA_OPTS%“并在”setenv“批处理文件中设置”设置JAVA_OPTS = -Dfile.encoding = UTF-8 -Xms128m -Xmx1024m -XX:PermSize = 64m -XX:MaxPermSize = 256m“以下路径
\ JasperReports的服务器-CP-5.6.0 \ Apache的Tomcat的\ bin中
答案 5 :(得分:0)
我能够使用这里的建议调试我在运行Eclipse插件单元测试时Travis CI运行内存不足的问题。我必须设置MaxPermSize,我通过将以下内容添加到我的java ant任务中来完成:
<jvmarg line="-Xms40m -Xmx1024m -XX:MaxPermSize=512m"/>