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