news 2026/5/18 16:40:48

GC 频率 vs 触发条件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GC 频率 vs 触发条件

在 Java 中,垃圾回收(GC)的频率触发条件取决于GC算法、堆内存分配、对象生命周期以及JVM参数的配置。

GC 触发条件
年轻代 GC(Minor GC / Young GC)

  • Eden 区满了:当新对象分配到 Eden 区,如果 Eden 区没有足够的空间分配新对象,就会触发 Minor GC。
  • Survivor 空间不足:当存活对象从 Eden 复制到 Survivor,但 Survivor 空间不够时,也可能导致 Minor GC。
  • 仅回收年轻代(Young Generation),不会影响老年代(Old Generation)。
  • 采用复制算法(如 Serial、Parallel、G1 的 YGC)。
  • 停顿时间短,但回收频率较高。
  • Minor GC 之后,存活对象可能晋升到老年代

老年代 GC(Major GC / Old GC)

  • 老年代空间不足:当对象从 Survivor 晋升到老年代,或者大对象直接进入老年代,导致老年代空间不够时,会触发 Major GC。
  • G1 GC 触发 Mixed GC:G1 在一定条件下会触发回收老年代的 Mixed GC。
  • 主要清理老年代(Old Generation),回收存活时间较长的对象。
  • 相比 Minor GC,Major GC 的停顿时间更长,但一般回收频率较低。
  • 某些 GC(如 CMS)不会 STW,而是并发执行(Concurrent Mark-Sweep)。

Full GC

  • 显式调用System.gc()(不推荐,因为 JVM 可能会忽略)。
  • 老年代空间不足:当老年代没有足够空间存放新对象时,Major GC 可能变成 Full GC。
  • Metaspace/元空间溢出(如类加载过多,导致java.lang.OutOfMemoryError: Metaspace)。
  • G1 GC 触发 Full GC:当 G1 发现回收无法跟上对象分配速度时,会进行 STW 的 Full GC。
  • 回收整个堆(包括年轻代 + 老年代 + 元空间)
  • 停顿时间长,影响系统吞吐量和响应时间。
  • 一般不希望频繁发生 Full GC,需要调优。

GC 频率的影响因素
对象分配速率

  • 短生命周期对象多(临时变量、业务请求数据)Minor GC 频繁
  • 大量大对象(如byte[]→ 可能直接进入老年代,加速 Major/Full GC

GC 算法
不同 GC 算法对 GC 频率的影响不同:

  • Serial GC(单线程、适用于小内存) → GC 频率高,暂停时间长。
  • Parallel GC(多线程 GC,吞吐量优先) → GC 频率较低,适用于高吞吐场景。
  • G1 GC(区域化分代、回收预测) → 控制 GC 停顿时间,适用于大内存。
  • ZGC、Shenandoah GC(低延迟 GC) → 减少 GC 影响,适用于大内存应用。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/18 16:39:11

pycharm和jupyter notebook配置conda环境

以管理员身份运行anconda prompt环境1.conda create -n ML python3.52.conda activate ML二、jupyter notebook配置conda环境1、使用conda activate ML激活ML2、安装python包ipykernelconda install ipykernel然后再执行python -m ipykernel install --user ML --display-name …

作者头像 李华
网站建设 2026/5/18 16:39:06

AI大模型搭建背后的秘密:从零到一,你只需要这7步

搞AI大模型,听着就头大,对吧? 代码、数据、算力,感觉每一样都能把人劝退。 其实没那么玄乎。 就跟搭乐高差不多,只不过零件是算法和参数。 今天不聊虚的,就拆开给你看。 咱们一步一步来。 AI大模型搭建需要…

作者头像 李华
网站建设 2026/5/18 16:38:44

NotebookLM+量子计算:如何在72小时内构建首个可验证量子线路原型?

更多请点击: https://kaifayun.com 第一章:NotebookLM量子计算研究的范式变革 传统量子计算研究长期受限于理论推演与实验验证之间的鸿沟:文献理解碎片化、算法原型迭代周期长、跨模态知识(如论文PDF、Qiskit代码、LaTeX公式&…

作者头像 李华
网站建设 2026/5/18 16:36:04

如何用VMware Unlocker突破虚拟化限制实现macOS跨平台运行

如何用VMware Unlocker突破虚拟化限制实现macOS跨平台运行 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 你是否曾经面临这样的困境:作为Windows或Linux开发者,需要在macOS环境…

作者头像 李华