Spring java.lang.OutOfMemoryError:tomcat7 windows服务的PermGen空间

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 当我检查服务器状态时,我可以看到服务器正在使用 我配置的内存 环境变量(系统变量)配置:

我正在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

    当我检查服务器状态时,我可以看到服务器正在使用 我配置的内存

  • 环境变量(系统变量)配置:

    • JAVA\u主页:
      C:\ProgramFiles\JAVA\jdk1.6.0\u 25
    • 路径:
      ..;%JAVA\u HOME%\bin
我是否也需要添加CATALINA\u HOMEJAVA\u OPTS系统变量

问题:我有两个web应用程序APP1,*APP2* 当我分别部署每一个时,我可以找到用于

APP1=198MB APP2=104 MB

有关申请的资料:

APP1、APP2:Spring Maven应用程序,包括在库中的其他小型Maven Spring应用程序

APP1:包含APP2使用的Web服务

如果我试图在同一个tomcat实例上部署这两个组件,我总是会

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作为服务运行时这一点。