GC 分代回收算法
1、首先了解JVM堆内存是如何分配的。
年轻代内部 生成区 和 S0 S1 的比例 默认情况下是 8:1 :1
堆内存和永久代存储的内容有区别:
堆内存主要存储的是 : 对象,GC机制主要回收的就是这个
永久代存储的是: 也被称为方法区、存储程序中长期存活的对象 类似 元数据方法常量及属性等
元空间:jdk8 之后就没有永久代的概念的 取而代之的是叫 元空间
元空间和 永久代的区别是
- 元空间使用的是本地的内存而不是 JVM空间
- 字符串常量 由永久代 移动到 堆内存中
以下是元空间的配置参数:
- MetaspaceSize :初始化元空间大小,控制发生GC阈值
- MaxMetaspaceSize : 限制元空间大小上限,防止异常占用过多物理内存
怎样避免多次FullGC?
- 避免定义过大的对象(数组)
- 避免将过大对象定义为静态变量