【问题标题】:Where is Java PERM generation?Java PERM 生成在哪里?
【发布时间】:2011-05-11 18:32:48
【问题描述】:

当你启动一个 JVM 时,PERM GEN 是在哪里分配的?它是主 HEAP 的一部分还是 HEAP 大小的补充。

例如,如果我使用以下参数:

-server -Xms10G -Xmx10G -XX:MaxPermSize=1536M 

Java 的总大小是 6G + 512M 还是 Java 的 6.5G 或者是 HEAP 内部的 perm 生成设置,这意味着所有正在运行的应用程序对于年轻 / 终身(又名 OLD)将有 6G - 512M = 5.5MB ) 和烫发?

4. Sizing the Generations 中的这张图似乎暗示它可能在 HEAP 之外,但我似乎无法找到一些可以肯定的说明。 http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html

查看 jstat 的输出,它似乎位于主 HEAP 的外部,但这可能只是它报告的方式。

[jboss@pts03-taps-03 ~]$ jstat -gccapacity PID


 NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC      PGCMN    PGCMX     PGC       PC     YGC    FGC 


 85184.0  85184.0  85184.0 8512.0 8512.0  68160.0 10400576.0 10400576.0 10400576.0 10400576.0  21248.0 1572864.0 1387840.0 1387840.0    431    43


OGCMX = 10400576.0  (almost 10G OLD GEN)  
NGCMX = 85184.0  (OGCMX + NGCMX = very close to 10G NEW GEN)
PGCMX = 1572864.0  (1.5G PERM GEN)

如果可能,请提供指向您的案例是否属实的文档链接。

【问题讨论】:

    标签: java jvm


    【解决方案1】:

    -服务器-Xms10G -Xmx10G -XX:MaxPermSize=1536M

    堆和 perm gen 的总和将是 11.5 GB。但是还有其他内存区域,例如可以一样大的直接内存。另一个领域是共享库,它基本上是固定大小的。

    例如你可以设置

    -mx128m -XX:MaxPermSize=1g

    如果 perm gen 是堆的大小,这将失败。

    【讨论】:

    猜你喜欢
    • 2016-07-30
    • 2013-10-15
    • 2019-02-15
    • 2011-05-18
    • 2012-12-23
    • 2015-03-18
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多