《深入理解java虚拟机》读书笔记——垃圾收集与内存分配策略

可回收判定两种算法
引用计数法(Reference Counting):引用为0时可回收。
可达性分析法(Reachability Analysis): 从GCRoots对象到这个对象不可达。
GCRoots:
  • 本地变量表引用的对象;
  • 方法区中静态属性引用的对象
  • 方法区中常量引用的对象
  • Native方法栈引用的对象。
个人理解,即在生命周期内不会变得不可达的对象。
 
垃圾收集算法
复制算法,一般用于新生代的minor gc,效率较高;
标记-整理算法,用于老年代的full gc,效率较低。
梳理对象的生命周期:
  1. 在新生代 Eden区和一个Survivor区(from survivor)分配内存
  2. 标记可回收对象
  3. 将存活对象复制到另一个Survivor区(to survivor),不够用则将存活周期较长的对象复制到老年代
  4. 清空Eden区和from survivor区(minor gc)
  5. 如果在写老年代时,发现老年代不够用,则触发一次full gc 

猜你喜欢

转载自www.cnblogs.com/night1989/p/jvm.html