GC垃圾回收
GC垃圾回收
垃圾回收算法
- 引用计数法,弃用,原因:内存消耗,并难解决循环引用;
- 复制算法,主要用在新生代,从from区到to区,缺点: 内存占用大;
- 标记清除,遍历标记垃圾对象,然后回收垃圾,缺点: 两次遍历,且产生内存碎片;
- 标记压缩,遍历标记垃圾对象,然后压缩内存空间,不产生内存碎片
垃圾回收器
垃圾回收器的种类[可以比较顾客和清洁员]
- 串行垃圾回收 阻塞客户线程,单线程回收
- 并行垃圾回收,阻塞客户线程,多线程回收
- cms 并发标记清除,短暂阻塞客户线程,然后客户线程和回收线程并行执行
垃圾回收器的分代
- 用于新生代的serial串行,parallel并行,parNew
- 用于老年代的serialOld,cms,parallelOld
- 两代通吃的是G1,G1类似2048游戏一样
垃圾回收条件
- 引用计数法,弃用
- 可达性分析,以GCRoots对象作为起点,对象可以到达;
GCRoot对象:
1. 虚拟机栈引用的对象
2. 本地方法栈引用的对象
3. 方法区的静态属性引用