JVM垃圾收集器

2017-12-01  本文已影响0人  cooolboy

声明:此篇文章是读《深入理解JAVA虚拟机》的笔记

1. 对象已死?

  堆中几乎存放着Java中所有的对象实例,垃圾收集器在回收前,如何判断哪些对象是活着,哪些对象已经死去

/**
 *JVM的GC日志的主要参数包括如下几个:
 *-XX:+PrintGC 输出GC日志
 *-XX:+PrintGCDetails 输出GC的详细日志
 *-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)
 *-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
 *-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
 *-Xloggc:../logs/gc.log 日志文件的输出路径
 */
public class ReferenceCountingGC {
    public Object instance = null;
    private static final int _1MB = 1024 * 1024;
    //占用空间
    private byte[] bigSize = new byte[2*_1MB];

    public static void main(String[] args) throws InterruptedException {
        ReferenceCountingGC objA = new ReferenceCountingGC();
        ReferenceCountingGC objB = new ReferenceCountingGC();
        objA.instance = objB;
        objB.instance = objA;
        objA = null;
        objB = null;
        System.gc();
    }
}

GC日志显示:

[GC (System.gc()) [PSYoungGen: 5336K->504K(6144K)] 5336K->608K(19968K), 0.0012319 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

2. 垃圾收集算法

3. 垃圾收集器

  简单来说垃圾收集器就是内存回收的具体实现。虽然有不同的收集器,但是目前为止还没有最好的收集器出现,也没有万能收集器,我们选择的只是对具体应用最合适的收集器。


JVM虚拟机收集器
上一篇 下一篇

猜你喜欢

热点阅读