增加基于 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 空间的主要内容,如果未能解决你的问题,请参考以下文章

windows服务器部署多个不同端口的tomcat

在 Tomcat 上安装基于 spring 的应用程序

windows7下部署tomcat

Windows下怎样安装Tomcat

Tomcat:调整内存比例

Tomcat PermGen 上的 Spring MVC 空间不断增加