【问题标题】:Is java PermGen space part of the total VM memory? [duplicate]java PermGen 空间是虚拟机总内存的一部分吗? [复制]
【发布时间】:2011-05-12 13:10:34
【问题描述】:

假设我使用以下参数启动我的 java VM:

-Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m

512m PermGen 空间添加到 1024m 内存还是其中的一部分?或者换句话说,我的总内存消耗是 1536m 还是 1024m?在后一种情况下,这是否意味着应用程序只有 512m 用于 PermGen 空间以外的用途?

如果这个问题表明对 PermGen 空间缺乏了解,请告诉我。 ;-)

【问题讨论】:

  • 你为什么不试试呢?应该立即在顶部/任务管理器中可见。

标签: java memory memory-management permgen


【解决方案1】:

-Xms-Xmx 参数指的是 内存,而 PermGen 空间是一个单独的内存池。

换句话说,您的 Java 应用程序可用的总内存大小将是 1.5 GiB 而不是 1 GiB,并且您将获得用于堆分配对象的全部 GB 空间。

【讨论】:

    【解决方案2】:

    我刚刚通过谷歌浏览了这个页面。无论 PerGen 是否是 Heap 的一部分,这都是一定的混淆: 答案是“堆被分解成更小的部分/代,这些部分是:年轻代、老代或永久代和永久代”。这是甲骨文至少可以说的。与网络域上的观众相比,按照原创者所说的更有意义。

    关于 PermGen 的简短说明: 永久代包含 JVM 所需的元数据,用于描述应用程序中使用的类和方法。 JVM 在运行时根据应用程序使用的类填充永久代。此外,Java SE 库类和方法也可能存储在这里。

    【讨论】:

      【解决方案3】:

      在 Sun 的 JVM 中,永久代不是堆的一部分。它是类定义和相关数据以及实习字符串所在的不同空间。

      【讨论】:

        猜你喜欢
        • 2017-07-26
        • 2014-12-16
        • 2020-05-21
        • 2012-05-14
        • 2012-08-02
        • 2013-03-14
        • 2012-05-31
        • 2023-03-17
        • 2011-03-02
        相关资源
        最近更新 更多