news 2026/6/12 9:22:51

Java垃圾回收机制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java垃圾回收机制

可达性分析(Reachability Analysis)

垃圾回收的核心机制是通过可达性判断对象是否存活。从GC Roots(如虚拟机栈、静态变量、本地方法栈等)出发,遍历引用链,未被引用的对象判定为垃圾。

示例代码:

Objectobj=newObject();// obj为GC Roots的强引用obj=null;// 对象不可达,成为垃圾

分代收集理论(Generational Hypothesis)

基于对象生命周期将堆分为新生代(Young Generation)和老年代(Old Generation)。新生代对象存活率低,适合高频回收;老年代对象存活率高,适合低频回收。


标记 - 清除算法(Mark-Sweep)

过程:标记所有可达对象,清除未标记对象。
缺点:内存碎片化,分配大对象时可能触发Full GC。
优点:实现简单,适用于老年代。
适用场景:CMS收集器的老年代回收阶段。


标记 - 整理算法(Mark-Compact)

过程:标记后将存活对象向内存一端移动,清理边界外内存。
缺点:移动对象导致停顿时间较长。
优点:避免碎片化,适合老年代。
适用场景:Serial Old和Parallel Old收集器。


复制算法(Copying)

过程:将内存分为两块,存活对象复制到另一块后清空当前块。
缺点:内存利用率仅50%。
优点:高效无碎片,适合新生代。
适用场景:Serial、ParNew等新生代收集器。

示例参数:

-XX:SurvivorRatio=8# Eden与Survivor区比例

分代收集算法(Generational Collection)

过程:新生代用复制算法,老年代用标记-清除或标记-整理。
缺点:需处理跨代引用。
优点:平衡吞吐量与停顿时间。


新生代收集器

Serial

  • 算法:复制算法
  • 特点:单线程,STW(Stop-The-World)
  • 适用场景:客户端模式或小内存应用

ParNew

  • 算法:复制算法
  • 特点:多线程版Serial,需与CMS配合
  • 适用场景:服务端多核环境

Parallel Scavenge

  • 算法:复制算法
  • 特点:关注吞吐量(Throughput)
  • 参数示例:
    -XX:MaxGCPauseMillis=100# 最大停顿时间目标

老年代收集器

CMS (Concurrent Mark Sweep)

  • 算法:标记-清除
  • 特点:并发标记,低停顿
  • 缺点:碎片化,并发模式失败时退化为Serial Old
  • 适用场景:响应优先的系统

G1 (Garbage-First)

  • 算法:分区(Region)标记-整理
  • 特点:可预测停顿模型,兼顾吞吐与延迟
  • 参数示例:
    -XX:G1HeapRegionSize=4m# 分区大小

GC 触发条件

Minor GC:Eden区满时触发,存活对象移至Survivor或晋升老年代。
Full GC:老年代不足、元数据区不足或显式调用System.gc()触发。


GC 日志分析

开启日志

-XX:+PrintGCDetails -Xloggc:gc.log

关键指标

  • GC pause time:停顿时间
  • Heap usage:回收前后堆占用

JVM 参数调优示例

-Xms4g -Xmx4g# 固定堆大小避免动态调整-XX:+UseG1GC# 启用G1收集器-XX:MaxGCPauseMillis=200# 目标停顿时间

常见问题

频繁 Full GC

  • 原因:老年代空间不足或内存泄漏。
  • 解决:检查对象晋升策略,调整-XX:MaxTenuringThreshold

OOM

  • 原因:堆不足或直接内存溢出。
  • 解决:分析堆转储(-XX:+HeapDumpOnOutOfMemoryError)。

收集器对比

收集器停顿时长吞吐量适用场景
Serial客户端/小内存
Parallel后台计算任务
G1可控中高大堆低延迟需求

监控工具

  • 命令行:jstat -gcutil <pid>
  • 可视化:VisualVM、Grafana + Prometheus

未来趋势

  • ZGC:亚毫秒级停顿,适用于超大堆(JDK15+生产可用)。
  • Shenandoah:并发整理,与G1竞争(JDK12+)。

通过合理选择算法和收集器,结合日志分析与参数调优,可显著提升Java应用性能。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 15:53:40

Java基于Spring Boot+Vue的学业导师管理系统的设计与实现

所需该项目可以在最下面查看联系方式&#xff0c;为防止迷路可以收藏文章&#xff0c;以防后期找不到 项目介绍 在当今高等教育体系中&#xff0c;本科生学业导师制度已成为提升教学质量、促进学生个性化发展的重要途径。然而&#xff0c;随着高校扩招和学生人数的激增&#…

作者头像 李华
网站建设 2026/5/30 3:48:55

亲测好用9个AI论文写作软件,专科生轻松搞定毕业论文!

亲测好用9个AI论文写作软件&#xff0c;专科生轻松搞定毕业论文&#xff01; 专科生的论文写作救星&#xff0c;AI 工具如何改变你的学习节奏&#xff1f; 在当今这个信息爆炸的时代&#xff0c;学术写作早已不再是少数人的专属。对于专科生而言&#xff0c;撰写一篇合格的毕业…

作者头像 李华
网站建设 2026/6/10 7:59:55

专精特新小巨人发展,为何必须依靠外脑?又该找谁?

专精特新小巨人发展&#xff0c;为何必须依靠外脑&#xff1f;又该找谁&#xff1f;专精特新小巨人企业正站在发展的关键节点&#xff1a;一方面拥有核心技术优势&#xff0c;另一方面却面临从“技术冠军”向“生态领袖”跃迁的复杂挑战。在这个阶段&#xff0c;仅靠企业内部力…

作者头像 李华
网站建设 2026/6/10 19:25:02

成都余行专利代理事务所:专精特新企业知识产权全流程战略护航专家

成都余行专利代理事务所&#xff1a;专精特新企业知识产权全流程战略护航专家 在专精特新企业的发展征程中&#xff0c;知识产权不仅是技术创新的保护伞&#xff0c;更是企业构建核心竞争力和生态话语权的战略武器。然而&#xff0c;专利工作绝非简单的“申请-授权”线性流程&…

作者头像 李华