堆的分代
- 新生代(Young Generation)
使用newSize和MaxNewSize来控制新生代的初始大小和最大大小 - 老年代(Old Generation)
- 永生代(Permanent Generation) 1.8之后使用元空间,不在堆中了.
对象是否被引用判断(能不能被回收)
- 引用计数法
核心思想:当对象被引用的时候就加1,引用失效的时候就减1。当值为0时就可以回收了。
优点:简单高效
缺点:如果两个对象循环依赖,各自的引用数都不为0.但是应该是被回收的才对。 - 可达性分析算法
从GC Roots为起始点。当从根节点开始遍历依赖树,无法到达某个对象的时候。则该对象是可以被回收了。回收算法(怎么回收)
- 标记/清除算法
给GC ROOTS 依赖树上的节点打上标记。发身份标识。然后去找没有身份标识的对象进行回收。 - 复制算法
将内存分成两个块,每次只使用其中的一块。当这块内存用完的时候。将GC ROOTS树拎到另一块内存(复制)。然后将掉落的叶子给清掉。 - 标记/整理算法
将还在树上的叶子整理得紧凑起来。然后就腾出空间了。