JAVA什么时候执行GC

作者: zhangxuanchen | 来源:发表于2017-02-09 23:49 被阅读48次

    GC是在什么时候:
    eden满了minor gc,升到老年代的对象大于老年代剩余空间full gc,或者小于时被HandlePromotionFailure参数强制full gc;GC不受程序员控制。

    对什么东西:
    从root搜索不到,而且经过第一次标记、清理后,仍然没有复活的对象。(在finalize方法中能够使对象重新复活)
    只有root节点搜索不到某个对象的时候,才会调用对象的finalize方法。

    做什么:
    删除不使用的对象,回收内存空间;运行默认的finalize,当然程序员想立刻调用就用dipose调用以释放资源如文件句柄,JVM用from survivor、to survivor对它进行标记清理,对象序列化后也可以使它复活。

    GC的类型:
    新生代 GC(Minor GC):指发生在新生代的垃圾收集动作,因为 Java 对象大多都具备朝生夕灭的特性,所以 Minor GC 非常频繁,一般回收速度也比较快。

    老年代 GC(Major GC / Full GC):指发生在老年代的 GC,出现了 Major GC,经常会伴随至少一次的 Minor GC(但非绝对的,在 ParallelScavenge 收集器的收集策略里就有直接进行 Major GC 的策略选择过程) 。MajorGC 的速度一般会比 Minor GC 慢 10倍以上。

    http://blog.sina.com.cn/s/blog_68158ebf0100wp83.html

    相关文章

      网友评论

        本文标题:JAVA什么时候执行GC

        本文链接:https://www.haomeiwen.com/subject/ugowittx.html