增加基于 Windows 安装程序的 Tomcat PermGen 空间
Posted
技术标签:
【中文标题】增加基于 Windows 安装程序的 Tomcat PermGen 空间【英文标题】:Increase Windows installer-based Tomcat PermGen Space 【发布时间】:2014-02-01 23:15:42 【问题描述】:我在使用 Tomcat 时遇到了一些问题。我正在部署一个 Grails 应用程序,并且在添加新功能时,我在 stacktrace 文件中遇到了这个(可悲的是众所周知的)错误:
Caused by: java.lang.OutOfMemoryError: PermGen space
2014-01-13 19:28:35,753 [http-bio-8080-exec-26] ERROR StackTrace - Full Stack Trace:
org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.OutOfMemoryError: PermGen space
at gsp_liquidaciones_liquidacionDeComplejolist_gsp$_run_closure2.doCall(gsp_liquidaciones_liquidacionDeComplejolist_gsp.groovy:84)
at gsp_liquidaciones_liquidacionDeComplejolist_gsp.run(gsp_liquidaciones_liquidacionDeComplejolist_gsp.groovy:105)
at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195)
at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
...
我有一个基于 Windows 安装程序的 tomcat 安装,但我也没有 catalina.bat 文件。谷歌搜索许多页面建议修改此文件(catalina.bat)或注册 JAVA_OPTS 变量,但没有任何效果。那么,我必须在哪里指定这个参数呢?:
SET JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC”
我尝试通过 Apache Tomcat 7 属性窗口修改 Java 选项,但修改后服务器无法启动。
我的电脑安装了 4Gb RAM。
提前致谢。
【问题讨论】:
【参考方案1】:对于以下系统规格:
Windows 7 64 位 4 GB 已安装 RAM 英特尔酷睿 i7 处理器 Java(TM) SE 运行时环境(内部版本 1.6.0_25-b06)可接受行为的 Tomcat 7 Java 属性可能是:
【讨论】:
【参考方案2】:当将 tomcat 作为 Windows 服务安装时,您应该有一个小型 Windows 应用程序“tomcat6w.exe”或“tomcat7w.exe”。当您启动此应用程序时,它有一个“Java”选项卡,您可以在其中设置 JVM 参数。更多详情请见more memory to Tomcat service。
只需输入以-X开头的参数即可。
【讨论】:
这就是我尝试做的(我编辑了我的帖子),但更改后服务器无法启动。 参数列表可能有错误。你检查过服务器的日志吗?在日志选项卡中设置调试级别以获取更多信息。 这是在 tomcat7-stderr.2014-01-14 文件中记录的最后一行:2014-01-14 19:48:29 Commons Daemon procrun stderr initialized Could not create the Java virtual machine.
这是在 tomcat7-stdout.2014-01-14 文件中记录的最后一行:@ 987654324@你认为我在Java选项卡中指定的值是否适合我的电脑内存?
是的,我认为指定的堆大小太高了。另请参阅此线程:***.com/questions/14654328/…
感谢您提供的链接,我已阅读,但我认为它无助于解决我的问题。毕竟我的Tomcat安装工作正常,至少现在是这样。我想我只是推迟了这个问题。我将编写我所做的配置作为答案建议。【参考方案3】:
这在 apache-tomcat-8.0.15 中对我有用,但我认为对所有 tomcat 版本来说都是一样的。
我已经执行了 regedit 并找到了这个路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tomcat8
并将 ImagePath 键更改为:
C:\apache-tomcat-8.0.15\bin\tomcat8.exe //RS//Tomcat8 ++JvmOptions -XX:PermSize=128m -XX:MaxPermSize=512m
【讨论】:
以上是关于增加基于 Windows 安装程序的 Tomcat PermGen 空间的主要内容,如果未能解决你的问题,请参考以下文章