JVM学习笔记—垃圾回收

124 阅读1分钟

1. 如何确定被回收

标记是垃圾回收的第一步,确定内存那些正在使用,那些不再使用

  • 对象回收——引用计数
  • 对象回收——可达性分析
  • 方法区回收

2.可达性分析算法

简单来说,将对象及其应用关系看作一个图,选定活动的对象作为GC ROOTS 然后跟踪引用链条,如果对象和GC TROOTs之间不可达, 也就是不存在应用,就可以被回收了

引用类型和可达性级别

引用类型

  • 强引用:常见的普通对象引用,只要还有强引用指向一个对象,就不会被回收
  • 软引用:JVM在内存呢不足时,才会尝试回收软应用的对象
  • 弱引用:随时可能被回收
  • 虚引用:不能通过他访问对象

可达性级别

强可达 软可达 弱可达 幻想可达 不可达

垃圾回收算法

  • 标记-清除
  • 复制-清除
  • 标记-整理

分代收集

1、新生代
  • eden
  • s0
  • s1
2、老年代

垃圾回收器

  • 串行(单线程)
  • 并行(多想成)
  • 并发(CMS),针对老年代,使用标记-清除
  • 并行 (ParNew)配合CMS对新生代使用
  • G1 (分区)