元月's blog 元月's blog
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多

元月

临渊羡鱼,不如退而结网
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多
  • 基础

  • 并发编程

  • JVM

    • Java的调试体系-JPDA架构
    • JVM整体结构和内存模型
    • 深度剖析JVM类加载机制
    • JVM对象创建与内存分配机制
    • JVM垃圾回收算法
      • 一、分代收集理论
      • 二、回收算法
        • 1、标记-复制算法
        • 2、标记-清除算法
        • 3、标记-整理算法
      • 三、思维导图
    • JVM垃圾收集器一:Serial和Parallel收集器
    • JVM垃圾收集器二:CMS与三色标记算法详解
    • JVM垃圾收集器三:G1(Garbage First)
    • JVM垃圾收集器四:ZGC与颜色指针详解
    • JVM调优之常用的调优指令
    • JVM调优之常用的调优工具
    • Arthas:一款优秀的Java诊断工具
    • 亿级流量系统JVM实战
  • Java基础
  • JVM
元月
2022-09-12
目录

JVM垃圾回收算法

# JVM垃圾回收算法

# 一、分代收集理论

目前主流的虚拟机都是使用分代收集算法,根据对象存活周期,将java堆分为新生代和老年代

  • 新生代(99%对象朝生夕死) 使用 标记-复制算法

  • 老年代 使用 标记-清除算法 或 标记-整理算法

# 二、回收算法

# 1、标记-复制算法

它将内存划分为大小相同的两块,每次只使用其中的一块。当这一块的内存使用完后,就将还存活的对象复制到另一块内存中,然后再把使用的空间一次清理掉。

# 2、标记-清除算法

它分为“标记”和“清除”两个阶段:标记存活的对象, 回收未被标记的对象

但是会带来两个明显的问题:

​ 1、效率问题 (如果需要标记的对象太多,效率不高)

​ 2、空间问题(标记清除后会产生大量不连续的空间碎片)

# 3、标记-整理算法

标记阶段与“标记-清除”算法一样,但是后续步骤不是直接对可回收对象进行回收,而是让所有存活的对象向一端移动,然后直接清理掉端边界以外的内存

# 三、思维导图

#JVM
JVM对象创建与内存分配机制
JVM垃圾收集器一:Serial和Parallel收集器

← JVM对象创建与内存分配机制 JVM垃圾收集器一:Serial和Parallel收集器→

最近更新
01
otter二次开发-支持按目标端主键索引Load数据
08-03
02
mvnw简介
06-21
03
gor流量复制工具
06-03
更多文章>
Theme by Vdoing | Copyright © 2022-2024 元月 | 粤ICP备2022071877号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式