引用

强引用 Strong

只要强引用还在,GC永远不会回收掉被引用的对象

软引用 Soft

可能还有用,但非必须。在内存不足时,被GC

弱引用 Weak

非必须。每次GC都被回收

虚引用 Phantom

最弱,无法通过虚引用取得对象实例。设置虚引用目的是在这个对象被GC时收到通知

JVM GC

算法

GCRoot:

  • 栈中引用的对象
  • 类静态属性引用的毒喜爱那个
  • 常量引用的对象
  • Native JNI中引用的对象
  1. 引用计数法
  2. 根搜索算法
    1. 标记清除法
    2. 标记整理法,与2类似,但清除后会把活对象向左端空闲空间移动并更新引用对象指针(存活对象多,旧生代)
    3. 复制算法,将存活对象移动一块空闲区域(存活对象少时,复制算法高效,新生代Eden区)

垃圾收集器

Serial GC, ParNew GC, Parallel Scavenge GC, CMS, G1, Serial Old, Parallel Old, TRSJ