zoukankan      html  css  js  c++  java
  • 【Java】JVM(三)、Java垃圾收集器

    一、Minor GC、Major GC 和 Full GC

      Minor GC:清理新生代空间,当Eden空间不能分配时候引发Minor GC

      Major GC:清理老年代空间

      Full GC:清理Java堆空间

    二、新生代垃圾收集器

      1. Serial 收集器

      

      线程:单线程收集器,

      算法:新生代标记复制,老年代标记整理

      缺点:在进行垃圾收集时候需要停止所有用户线程(STW)

      优点:没有线程交互开销

      

      2. ParNew 收集器

      

      在Serial收集器上进行改进,将GC改成了多线程,其他的包括Serial可用的所有控制参数、收集算法、STW、对象分配规则、回收策略等都与Serial完全一样。

     

      3. Parallel Scavenge 收集器

      算法:复制算法

      线程:多线程

      关注点:系统吞吐量

      系统吞吐量=运行用户代码时间(运行用户代码时间+垃圾收集时间)

    三、老年代垃圾收集器

      1. Serial Old 收集器

      Serial Old 是Serial 的老年代版本

      线程:单线程

      2. Parallel Old 收集器

      Parallel Old 是 Parallel Scavenge 的收集器老年代版本,

      3. CMS(Concurrent Mark Sweep 并发标记清理)收集器

      

      线程:多线程

      算法:标记清理

      步骤

      1)初始标记:标记GC Root 能直接关联到的对象

      2)并发标记:GC Root Tracing 过程

      3)重新标记:标记并发期间Java程序产生的对象

      4)并发清除:清理垃圾

      缺点:

      1)对CPU敏感,虽然不会停止CPU,但是会占用部分CPU资源

      2)无法处理浮动垃圾(在初始标记之后,并发标记时候产生的垃圾),只能留着下次清理

      3)大量的空间碎片

      4. G1 收集器

      优势:

      1)并行与并发

      2)分代收集

      3)空间整合

      4)可预测停顿

      步骤:

      1)初始标记

      2)并发标记

      3)最终标记(修正并发标记期间用户继续运作导致标记变动的一部分记录)

      4)筛选回收

      

     

  • 相关阅读:
    GitHub 如何创建 Access Token
    Fact Table 数据表什么意思
    高基数数据特性是什么意思
    Edge 浏览器的隐藏 URL QR 生成器
    Apache Druid 安装的时候进行 Java 版本校验没有输出
    Apache Druid 简介
    如何在 Discourse 中批量移动主题到不同的分类中
    素材
    Drawable转bitmap
    Drawable与 Bitmap 转换总结
  • 原文地址:https://www.cnblogs.com/zleiblogs/p/9296790.html
Copyright © 2011-2022 走看看