【问题标题】:PermGen Space Issue永久代空间问题
【发布时间】:2013-09-26 14:25:52
【问题描述】:

环境:Windows Server 2003 x86 Intel Xeon 2.3 4gb Ram | Tomcat 7.0.27 | jdk 1.7.0.25

我正面临 OutOfMemoryError。 SO建议使用java选项来增加permgen空间使用以下选项

-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC

但是 tomcat 状态页面仍然显示 permgen 内存为 64MB。为什么取不到参数中指定的值?

【问题讨论】:

    标签: java tomcat


    【解决方案1】:

    状态页面中没有 PermGen,请看这个http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html#Introduction

    无论如何,你的 conf 似乎还可以

    由于 PermGen 是 java 的东西(不是 tomcat),你应该使用 java 工具来检查它,看看this

    【讨论】:

    • JVM 可用内存:91.98 MB 总内存:123.75 MB 最大内存:989.87 MB 内存池类型初始总计最大已用伊甸园空间堆内存 34.12 MB 34.12 MB 273.06 MB 24.47 MB​​ (8%) 幸存者空间堆内存 4.25 MB 4.25 MB 34.12 MB 4.25 MB (12%) Tenured Gen Heap memory 85.37 MB 85.37 MB 682.68 MB 3.04 MB (0%) Code Cache Non-heap memory 0.15 MB 1.87 MB 32.00 MB 1.85 MB (5%) Perm Gen Non -堆内存 12.00 MB 12.00 MB 64.00 MB 9.30 MB (14%) "ajp-bio-8009"
    • 它显示 64mb,当它的使用率上升到 99% 时我收到错误
    • 看看这个优化内存使用 (java.dzone.com/articles/busting-permgen-myths)
    【解决方案2】:

    如果您的设置看起来没问题,请检查您应用它们的方式:如果您通过批处理文件启动 tomcat,请使用内容创建 setenv.bat

      CATALINA_OPTS="-Dyour-settings-from-above ... all of them"
    

    如果您启动服务,则需要更新服务配置 - 因为我不在 Windows 上,所以很久没有这样做了。您是否使用 tomcatw.exe 创建/配置服务?不确定...

    【讨论】:

    • 使用windows服务启动tomcat...在tomcat7w.exe的java选项卡中添加选项
    • tomcat7w.exe 的其中一个选项卡上没有特定的内存设置吗?我怀疑您提供了这些命令行选项,但 tomcat7w.exe 根据您在 UI 中明确执行的设置配置(覆盖)内存。抱歉,我无法检查,因为它是 Windows 工具。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2011-03-01
    • 1970-01-01
    • 2011-10-11
    • 2018-05-19
    • 1970-01-01
    • 2011-04-17
    相关资源
    最近更新 更多