GC垃圾处理机制
虚拟机自动执行的,这个程序的优先级很低,只有在虚拟机空闲或者内存不足时调用
回收方法
- 标记-清除:效率不高,产生大量碎片内存
- 标记-整理:解决碎片问题
- 复制算法:消耗内存太大
在新生代中,每次垃圾收集时都有大批对象死去,只有少量存活,那就选用复制算法。只需要付出少量存活对象的复制成本就可以完成收集。
老年代中因为对象存活率高、没有额外空间对他进行分配担保,就必须用标记-清除或者标记-整理。
由于永久代经常会内存不够用或者发生内存泄露,JDK1.8开始废弃了永久代,取而代之的是元空间(直接存在内存中可自定义大小),主要存放类的元数据。
判断对象是否存活的方法
- 引用计数法
- 给每个对象添加一个计数器,当有地方引用该对象时计数器加1,当引用失效时计数器减1。用对象计数器是否为0来判断对象是否可被回收。
- 缺点:无法解决循环引用的问题。
- 可达性算法
- 通过GC ROOT的对象作为搜索起始点,通过引用向下搜索,所走过的路径称为引用链。通过对象是否有到达引用链的路径来判断对象是否可被回收

浙公网安备 33010602011771号