4

我在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. 环境变量(系统变量)配置:

      • 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:包含 Web 服务,APP2 使用它们。

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

java.lang.OutOfMemoryError: PermGen space

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

4

4 回答 4

10

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

于 2012-12-23T08:16:25.700 回答
9

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

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

尝试类似的东西

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

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

于 2012-12-20T12:03:58.703 回答
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

于 2013-07-22T15:38:55.560 回答
3

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

于 2012-12-20T12:52:58.787 回答