Spring java.lang.OutOfMemoryError:tomcat7 windows服务的PermGen空间
我正在windows server 2008 R2上运行tomcat 7.0.33 (我将tomcat安装为windows服务)Spring java.lang.OutOfMemoryError:tomcat7 windows服务的PermGen空间,spring,jakarta-ee,tomcat,tomcat7,Spring,Jakarta Ee,Tomcat,Tomcat7,我正在windows server 2008 R2上运行tomcat 7.0.33 (我将tomcat安装为windows服务) JDK版本:jdk1.6.0\u 25 64位 Tomcat选项: Java虚拟机:C:\ProgramFiles\Java\jre6\bin\server\jvm.dll (顺便说一句,我在jre中没有客户端文件夹) 初始内存池:1000 MB 最大内存池:2000 MB 当我检查服务器状态时,我可以看到服务器正在使用 我配置的内存 环境变量(系统变量)配置:
- JDK版本:
jdk1.6.0\u 25 64位
- Tomcat选项:
- Java虚拟机:
(顺便说一句,我在jre中没有客户端文件夹)C:\ProgramFiles\Java\jre6\bin\server\jvm.dll
- 初始内存池:1000 MB
- 最大内存池:2000 MB 当我检查服务器状态时,我可以看到服务器正在使用 我配置的内存
- 环境变量(系统变量)配置:
- JAVA\u主页:
C:\ProgramFiles\JAVA\jdk1.6.0\u 25
- 路径:
..;%JAVA\u HOME%\bin代码>
- JAVA\u主页:
java.lang.OutOfMemoryError: PermGen space
请告知可能导致此问题的原因。您可能需要为Tomcat实例设置/增加MaxPermSize设置。注意,MAVEN_选项与Tomcat无关,它们是MAVEN命令行进程(mvn)的选项。应用程序是“maven”应用程序这一事实在运行时并不意味着什么,因为maven不参与应用程序的运行,只参与应用程序的构建 在tomcat安装的
\bin
文件夹中,应该有一个名为“tomcat7.exe”的应用程序。您可以使用它来更新tomcat服务的设置
试试像这样的东西
tomcat7.exe//US//[您的tomcat服务的名称]--JVM选项=-Xmx2g
-Xms1g-XX:MaxPermSize=512m
编辑:上面的语句应该在一行,而不是两行…您需要增加永久空间。在参数中添加类似于
-XX:MaxPermSize=128m
的内容(如果愿意,您可以保留更多的perm gen空间)。-Xmx
和-Xms
设置是针对堆的,而这里您正在运行的堆是单独管理的。解决方案是在设置初始和最大内存池之外,是将-XX:MaxPermSize=1000m
添加到java选项卡中的java选项中。我遇到了一个类似的问题,当Tomcat独立运行时,我们的应用程序在Tomcat上运行时没有问题,而当Tomcat作为服务运行时,我们不断出现permgen内存不足异常
我找到了一个类似于Pap的解决方案。您需要通过运行bin/tomcat7w.exe//ES//name\u of_服务来访问Tomcat服务配置GUI。在这里,您可以转到Java选项卡并直接设置相应的Java属性-例如。
-XX:MaxPermSize=1000m
下面是一篇博文,它帮助我解释了在作为服务运行时,Tomcat忽略了哪些Tomcat设置。
这总是在新部署之后还是在您部署多次之后(例如在开发过程中)?你的webapps中有多少类?你能看到我使用的是tomcat管理器的最小1gb和最大2gb。你仍然需要将MaxPermSize指令添加到tomcat JVM选项中。这是我的误解。我必须在管理器中设置tomcat管理器的堆大小和jvm选项的maxpermsize。3000MB?什么,你是在一台有32GB内存的机器上开发还是什么?@Makoto,添加你想要的任何大小,我只是错过了这个参数+1的“在Windows中为Tomcat服务提供更多内存”链接,这很好地解释了当Tomcat作为服务运行时这一点。