• GC 和 Full GC 有什么区别?


    GC(或Minor GC):收集 生命周期短的区域(Young area)。

    Full GC (或Major GC):收集生命周期短的区域(Young area)和生命周期比较长的区域(Old area)对整个堆进行垃圾收集。

    他们的收集算法不同,所以使用的时间也不同。

    Minor GC后,Eden是空的吗?

    是的,Minor GC会把Eden中的所有活的对象都移到Survivor区域中,如果Survivor区中放不下,那么剩下的活的对象就被移到Old generation 中。

    GC 效率也会比较高,我们要尽量减少 Full GC 的次数。 当显示调用System.gc() 时,gc does a full collection(both young generation and tenured generation).

    显式调用system.gc()会触发full gc,对象在Eden出生每经历一次MInor GC后仍然存活,并且能被Survivor容纳,就会被移动到Survivor,

    并设定年龄为1.以后在Survivor每"熬过"一次Minor GC,年龄就增加一岁,当年龄超过一定值就被移动到老年代,MaxTenuringThreshold用于设置年龄阈值,但是如果Survivor空间中相同年龄所有对象大小的总和大于Survivor空间的一半,

    年龄大于或等于该年龄的对象就可以直接进入老年代,无须等到MaxTenuringThreshold中要求的年龄。

    大对象直接进入老年代,比如长数组或长字符串,-XX:PretenureSizeThreshold用于设置大于这个值直接在老年代分配。

  • 相关阅读:
    IOS基础之 (二) 面向对象思想
    Android学习笔记02-Mac下编译java代码
    常用数据库 JDBC URL 格式
    MySQL学习笔记04 插入中文时出现ERROR 1366 (HY000)
    bootstrap学习总结-06 按钮
    H2嵌入式数据库
    02 C语言指针
    页面技巧
    RequireJS进阶(二)
    RequireJS进阶(一)
  • 原文地址:https://www.cnblogs.com/akaneblog/p/6759860.html
Copyright © 2020-2023  润新知