运行时内存模型
堆默认的,新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2
垃圾回收模型
垃圾“判断”算法
引用计数算法
根搜索算法
上述的三种引用就是GC roots
方法区回收
注意:系统,扩展,根类加载器全局唯一实例 也就是说 这三种加载类加载是无法被GC ,其加载的类永远不会被卸载回收。自定义的类加载器才会被回收,所以方法区中的类被回收条件很苛刻但是还是可能被回收
垃圾“回收”算法
标记-清除算法(Mark-Sweep)
从头至尾 红色的都是可以被回收的
复制(Copying)收集算法
标记-整理算符(Mark-Compact)
- 没有内存碎片
- 比标记清除耗更多时间进行整理压缩(存活的对象要进行移动 需要耗费时间)
分代收集算法
内存结构
内存分配
内存回收
引用类型
- Strong :强引用
- Soft: 软引用
- Weak:弱引用
- Phantom:虚引用
还有G1算法
GC的时机(何时GC)
Full GC 的触发会导致业务线程暂停,他同时对新生代,老年代,元空间进行GC 开发时一定要避免FUllGC的出现
垃圾回收器
垃圾回收器并行和并发
Serial收集器
ParNew收集器
Parallel Scavenge收集器
Serial Old收集器
Parallel Old收集器
CMS收集器