JVM之初识垃圾收集器

  • JDK 8:Parallel Scavenge(新生代)+ Parallel Old(老年代)
  • JDK8以后:G1收集器

什么是串行回收和并行回收?

Serial收集器:串行收集器

新生代使用标记复制算法,老年代使用标记整理算法。工作时必须停止其它工作线程(stop the world)

ParNew收集器:Serial收集器的多线程版本

Parallel Scavenge 收集器

复制代码
-XX:+UseParallelGC

    使用 Parallel 收集器+ 老年代串行

-XX:+UseParallelOldGC

    使用 Parallel 收集器+ 老年代并行

Parallel Scavenge关注用户线程运行时间占cpu总运行时间的百分比(吞吐量)。Parallel Scavenge 收集器提供了很多参数供用户找到最合适的停顿时间或最大吞吐量

Serialold收集器

Serial 收集器的老年代版本

ParallelOld收集器

Parallel Scavenge 收集器的老年代版本

CMS收集器

关注用户体验,以最短停顿时间为目标。真正意义上的第一个并发收集器。让用户工作线程和垃圾回收线程可以同时运行。

G1收集器

专门针对于拥有多核处理器和大内存的机器。面向服务器的垃圾收集器,在满足停顿时间的同时还具备高吞吐量的特征。

为解决CMS收集器碎片多的问题,G1收集器会进行空间压缩。用regions(图中的小格子)代替细粒度的空闲列表进行分配,减少内存碎片的产生。

G1收集器追踪查看那个区域的可回收对象多,优先回收。

还可以使用暂停预测模型来满足用户定义的暂停时间目标,并根据指定的暂停时间目标选择要收集的区域数量。

从整体来看基于标记-整理算法,从局部来看基于标记-复制算法。

ZGC收集器

ZGC 也采用标记-复制算法 。ZGC 可以将暂停时间控制在几毫秒以内,且暂停时间不受堆内存大小的影响。代价是牺牲了吞吐量。

相关推荐
mldong1 小时前
弃用 ZCode,转 DeepSeek Harness:我用 GitHub Actions 自建 Windows 打包的全实录
java·架构
AgentMaster1 小时前
数据资产化落地难题:5款数据中台系统架构对比与实施记录
大数据·人工智能·算法
Wang's Blog1 小时前
Java 接入Redis: Redis下载与源码编译安装
java·服务器·redis
农民工老王1 小时前
故障排查:反向代理转发 GET 请求时 JDK 自动追加 Content-Length:0 致后端 500
java·httpclient·content-length
泡海椒1 小时前
jquick-pdf 防止 PDF 内容分页断裂:keepTogether 属性妙用
java·开发语言·pdf
vx_BS813302 小时前
【项目编号:project51381】Spring Boot 婚纱摄影管理系统:套餐预约、在线咨询、支付与客片展示的一站式业务实现
java·spring boot·eclipse·tomcat·mybatis
IT毕设实战小研2 小时前
基于大数据的商场商铺数据分析与可视化的设计与实现
android·java·大数据·django·课程设计
万年咸鱼2 小时前
Java Classpath 详解:从原理到实战
java
鹿角片ljp2 小时前
从 Kimi Cyber Reasoning 学习网络安全推理数据集:从 Reasoning SFT 到安全 Agent 数据设计
数据结构·算法
Ivanqhz2 小时前
矩阵引擎的数据流模式与 BM1684X 架构
java·服务器·网络·深度学习·神经网络