JVM的垃圾收集器策略

2018-01-17  本文已影响24人  大大大大大先生

说明:本篇属于读书笔记,大量参考《深入理解Java虚拟机》

判断对象不可用的几种方式

引用计数量法

可达性分析算法

  1. 虚拟机栈中的引用对象
  2. 方法区中的类静态属性引用的对象
  3. 方法区中常量引用的对象
  4. 本地方法区中的JNI引用的对象
    为什么以上四种可以作为Gc Roots?因为以上四种在Java程序运行起来之后就基本不会被回收

Java中的对象引用

ReferenceQueue queue = new ReferenceQueue ();
PhantomReference pr = new PhantomReference (object, queue);

程序可以通过判断引用队列中是否已经加入了虚引用,来了解被引用的对象是否将要被垃圾回收。如果程序发现某个虚引用已经被加入到引用队列,那么就可以在所引用的对象的内存被回收之前采取必要的行动。

对象是否可以被回收的判断条件

方法区的回收

垃圾回收算法

标记-清除算法(Mark-Sweep)

复制算法

标记-整理算法

分代收集算法

Stop The World

对象的内存分配于回收

上一篇 下一篇

猜你喜欢

热点阅读