Java-垃圾回收

  • 堆的分区

    新生代(Eden, Survivor), 老年代(Old), 持久代(Permanent)

  • 垃圾标记方式

    • 引用计数算法

      存在循环引用的无法清除的问题,简单的例子就是内部类

    • 可达性分析算法

      GC roots

  • 引用的分类

    • 强引用(strong), 软引用(soft), 弱引用(weak), 虚引用(phantom)

    • 强引用: 不会被回收

    • 软引用: 内存溢出之前回收

    • 弱引用: 执行第二次垃圾回收时回收

    • 虚引用: 直接回收

  • 垃圾回收算法

    • 标记-清除(mark-sweep)

      容易产生内存碎片,没有用到

    • 复制(copying)

      新生代使用的回收算法.可能造成空间浪费,可以根据对象的存活比率设计空间的大小. 当Survivor空间不足时,可以由老年代对其进行分配担保

    • 标记-整理(mark-compact)

      老年代的回收算法.stop-the-world

  • 垃圾回收器的优劣判断标准

    • 吞吐量(throughput)

    • 暂停时间(pause time)

    • G1(garbage-first)收集器的很重要的一点优势在于: 可预测的停顿

  • 参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容