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

Mah*_*leh 4 spring tomcat java-ee tomcat7

我在Windows Server 2008 R2上运行tomcat 7.0.33 (我安装了tomcat作为windows服务)

  • JDK版本: jdk1.6.0_25 64-bit
  • Tomcat选项:

    1. Java虚拟机:( C:\Program Files\Java\jre6\bin\server\jvm.dll 顺便说一句,我在jre里面没有客户端文件夹)
    2. 初始内存池: 1000 MB
    3. 最大内存池: 2000 MB

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

    4. 环境变量(SYSTEM VARIABLES)配置:

      • JAVA_HOME: C:\Program Files\Java\jdk1.6.0_25
      • 路径: ...;%JAVA_HOME%\bin;....

我是否还需要添加CATALINA_HOMEJAVA_OPTS系统变量?

问题:我有两个Web应用程序APP1,*APP2*,当我分别部署每个,我可以找到内存使用的

APP1 = 198 MB APP2 = 104 MB

有关申请的信息:

APP1,APP2:Spring Maven应用程序,在库中包含其他小型maven spring应用程序.

APP1:包含web2服务,APP2使用它们.

如果我试图在同一个tomcat实例上部署它们,我总是得到

java.lang.OutOfMemoryError: PermGen space
Run Code Online (Sandbox Code Playgroud)

请告知可能导致此问题的原因.

Mah*_*leh 10

解决方案旁边设置初始和最大内存池,是添加-XX:MaxPermSize=1000m到java选项卡中的java选项.


pap*_*pap 9

您可能需要为Tomcat实例设置/增加MaxPermSize设置.请注意,MAVEN_OPTS与Tomcat无关,这些是Maven命令行进程(mvn)的选项.您的应用程序是"maven"应用程序的事实在运行时没有任何意义,因为Maven不参与应用程序的运行,只是构建它.

\bintomcat安装的文件夹中,应该有一个名为"tomcat7.exe"的应用程序.您可以使用它来更新tomcat服务的设置.

尝试类似的东西

tomcat7.exe // US // [tomcat服务名称] --JvmOptions = -Xmx2g -Xms1g -XX:MaxPermSize = 512m

编辑:上面的陈述应该在一行,而不是两行......


Ond*_*ert 5

我有一个类似的问题,因为当Tomcat独立运行时,我们的应用程序在Tomcat上运行没有问题,并且在运行Tomcat作为服务时我们不断获得permgen内存异常.

我找到了一个与Pap相似的解决方案.您需要通过运行bin/tomcat7w.exe // ES // name_of_service来访问Tomcat服务配置GUI.在那里,您可以转到Java选项卡并直接设置相应的java属性 - 例如 -XX:MaxPermSize=1000m

这是一篇博客文章,它帮助我解释了Tomcat在作为服务运行时忽略了所有Tomcat设置. http://www.12robots.com/index.cfm/2010/10/8/Giving-more-memory-to-the-Tomcat-Service-in-Windows