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

时间:2012-12-20 11:38:16

标签: spring java-ee tomcat 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_HOME JAVA_OPTS 系统变量?

问题我有两个网络应用 APP1 ,* APP2 * 当我单独部署每个,我可以找到

的内存使用

APP1 = 198 MB APP2 = 104 MB

有关申请的信息:

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

APP1:包含web服务,APP2使用它们。

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

java.lang.OutOfMemoryError: PermGen space

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

4 个答案:

答案 0 :(得分:10)

解决方案除了设置初始&最大内存池,是将-XX:MaxPermSize=1000m添加到java选项卡中的java选项。

答案 1 :(得分:9)

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

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

尝试类似

的内容
  

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

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

答案 2 :(得分: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

答案 3 :(得分:3)

您需要增加PermGen空间。在参数中添加-XX:MaxPermSize=128m之类的内容(如果需要,可以保留更多的perm gen空间)。 -Xmx-Xms设置适用于堆,而此处您的PermGen space用完了,这是单独管理的。