美文网首页
垃圾回收总结

垃圾回收总结

作者: 七海的游风 | 来源:发表于2019-02-23 18:15 被阅读1次

hotspot垃圾回收器概览

image.png

知识点

  • 只要涉及到对象地址移动的就必须STW,所以young gc一定SWT

垃圾回收算法

  • 标记-清除: 内存碎片化
  • 标记-整理: 需要移动对象
  • 复制算法: 适合对象存活率不高的场景
  • 分代收集

新生代回收器,简单, 高效(单CPU)

  • serial:单线程的收集器 image.png
  • parNew: 其实就是Serial收集器的多线程版本


    image.png
  • Parallel Scavenge:比parNew多的功能是支持可控制的吞吐量(Throughput)

老年代回收器

Serial Old:单线程和“标记-整理”算法
Parallel Old:多线程和“标记-整理”算法

CMS

标记—清除算法

  • 初始标记(CMS initial mark):仅仅只是标记一下GC Roots能直接关联到的对象,速度很快
  • 并发标记(CMS concurrent mark)
  • 重新标记(CMS remark)
  • 并发清除(CMS concurrent sweep)

1.标记需要SWT
2.用时最长的并发标记和并发清除可以与用户线程同时进行
3.内存碎片导致无法分配大对象时会整理内存,STW时长会变成

G1

根据允许的收集时间,优先回收价值最大的Region(这也就是Garbage-First名称的来由)


image.png

1.并行与并发:G1能充分利用多CPU、多核环境下的硬件优势,使用多个CPU(CPU或者CPU核心)来缩短Stop-The-World停顿的时间,部分其他收集器原本需要停顿Java线程执行的GC动作,G1收集器仍然可以通过并发的方式让Java程序继续执行。

2.分代收集:与其他收集器一样,分代概念在G1中依然得以保留。虽然G1可以不需要其他收集器配合就能独立管理整个GC堆,但它能够采用不同的方式去处理新创建的对象和已经存活了一段时间、熬过多次GC的旧对象以获取更好的收集效果。

3.空间整合:与CMS的“标记—清理”算法不同,G1从整体来看是基于“标记—整理”算法实现的收集器,从局部(两个Region之间)上来看是基于“复制”算法实现的,但无论如何,这两种算法都意味着G1运作期间不会产生内存空间碎片,收集后能提供规整的可用内存。这种特性有利于程序长时间运行,分配大对象时不会因为无法找到连续内存空间而提前触发下一次GC。

4.可预测的停顿:这是G1相对于CMS的另一大优势,降低停顿时间是G1和CMS共同的关注点,但G1除了追求低停顿外,还能建立可预测的停顿时间模型,能让使用者明确指定在一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得超过N毫秒,这几乎已经是实时Java(RTSJ)的垃圾收集器的特征了。

G1官方文档:https://www.oracle.com/technetwork/tutorials/tutorials-1876574.html

相关文章

  • JVM垃圾回收算法

    Java基础:JVM垃圾回收算法 [toc] 参考:Java基础:JVM垃圾回收算法图解JVM垃圾回收算法 总结:...

  • 垃圾回收算法、回收机制与总结 ---JVM

    垃圾回收算法、回收机制与总结 ---JVM 一、垃圾回收算法 1.标记清除 标记--清除算法将垃圾回收分为两个阶段...

  • 2020-04-03 JVM垃圾回收相关文章引用

    这三篇文章总结的非常到位,收藏在这里。 Jvm垃圾回收器(基础篇) Jvm垃圾回收器(算法篇) Jvm垃圾回收器(...

  • JVM 垃圾回收算法

    JVM的4种垃圾回收算法、垃圾回收机制与总结 1.标记清除 标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶...

  • 垃圾回收总结

    内存垃圾回收主要是解决3个问题 哪些内存需要回收 what 何时回收 when 怎么回收 how 哪些需要回收 程...

  • 垃圾回收总结

    hotspot垃圾回收器概览 知识点 只要涉及到对象地址移动的就必须STW,所以young gc一定SWT 垃圾回...

  • Java虚拟机笔记 jvm notes(II GC)

    垃圾回收机制 比较好的文章: JVM 优化经验总结 JVM调优总结 1⃣️可回收对象算法 目前查看对象是否需要回收...

  • 简单理解垃圾回收

    什么是垃圾回收? 垃圾回收的是什么? 如何判断为垃圾? 垃圾是怎样被回收的? 垃圾回收哪些区域的内存? 什么是垃圾...

  • 垃圾回收算法与垃圾回收器总结

    概述 都知道Java是自动进行内存管理的,有自己的垃圾回收机制,那么具体Java是怎样进行垃圾回收的呢?本章就来总...

  • 24-垃圾回收器总结

    一、7种经典垃圾回收器总结image.png 二、垃圾回收器选择 1、优先调整堆的大小让JVM自适应完成 2、如果...

网友评论

      本文标题:垃圾回收总结

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