Java Memory Perm Size

作用范围

  Perm Size 相关参数主要用来控制永久代(JDK8 开始转为 Metaspace)内存大小。

相关参数

  Perm Size 主要参数有 2 个,分别介绍一下:

  • -XX:PermSize

    永久代最小值,也是初始化值

  • -MaxPermSize

    永久代最大值

使用案例

  • -XX:PermSize=100M 代表永久代初始大小为 100M,最小大小为 100M。

  • -XX:MaxPermSize=200M 代表永久代最大大小为 200M。

参数默认值

   以下为默认值均为 Linux 平台下的默认值。

参数 默认值 JDK 版本
-XX:PermSize 21757952 jdk1.8
-XX:MaxPermSize 85983232 jdk1.8

注意事项

  • JDK8 开始不再支持 PermSize 和 MaxPermSize 参数。

  • PermSize 不能小于 1M。

  • MaxPermSize 按照 2M 对齐。

  • PerSize 按照 64K 对齐,PS GC 下按照 512K 对齐。

  • Perm 空间大小会在 PermSize 和 MaxPermSize 之间动态调整。

  • PermSize 如果比 MaxPermSize 大,那么将会使用 PermSize 的值作为 MaxPermSize 的值。

  • Class 对象默认准在堆里,在 JDK8 前如果设置了 -XX:+UnlockDiagnosticVMOptions -XX:+JavaObjectsInPerm 这两个参数,将分配在 Perm 里。

  • CMS 算法下,其实 Perm 达到一定使用率,也时会触发 CMS GC 的。

  • 有时候老生代使用很少,但是不断在做 Full GC,可能是 Perm 空间满了导致的。

  • 持久代最大的 size 达到后会触发 Full GC。



Java     

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!