当前位置: 首页 > news >正文

什么是 FullGC

一、基础概念


Full GC(全局垃圾回收) 是指 清理整个Java堆内存(包括年轻代和老年代)以及方法区(元空间) 的垃圾回收过程。它是Java虚拟机中最耗时、对应用性能影响最大的一种垃圾回收操作,通常会导致应用程序线程的暂停


二、详细解释


要深入理解 Full GC,我们需要先了解Java内存模型和垃圾回收的基本分代理论


1. Java堆内存的分代


a、年轻代 (Young Generation)


新创建的对象首先被分配在这里。年轻代又分为一个 Eden区两个 Survivor区


Eden区【伊甸园】:新创建的对象绝大部分都分配在这里,当Eden区被填满时,会触发一次 Minor GC【每呢 GC】


Survivor区【幸存者区】:是年轻代的一部分,专门用来存放在一次 Minor GC【每呢 GC】 后仍然存活的对象


b、老年代 (Old Generation)


从年轻代晋升过来的对象:Survivor区【幸存者区】经历了多次 Minor GC【每呢 GC】 后仍然存活的对象


大对象:如果对象非常大(比如很长的数组或字符串),可能会直接分配在老年代(避免在Eden和Survivor区之间进行大量复制)


c、老年代 (Old Generation)


方法区是一个线程共享的内存区域,它存储的是已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据


三、Full GC 的核心触发条件


1. 老年代空间不足(最常见)


具体场景:

  • 年轻代对象晋升:Minor GC【每呢 GC】 后,存活对象需要晋升到老年代,但老年代空间不足

  • 大对象直接分配:大对象(如大数组)直接进入老年代,但空间不足

http://www.hskmm.com/?act=detail&tid=18588

相关文章:

  • Unity渲染时的排序规则
  • AI智慧的三重跃升:从「数理魔兽」到「悬荡悟空」的文明协作者
  • 新学期每日总结(第 5天)
  • codeforces round 1054(e.f)
  • 【SimpleFOC-小项目】驱动电机正转3周
  • 联合体union的基本用法
  • 弱结构光三维扫描重建
  • 9.27 git与pycharm
  • PCA降维
  • docker复制文件到宿主机
  • 【SimpleFOC】SimpleFOC的运动规划器(Motion Planner)和梯形速度规划
  • Day22多态详解
  • rad/s RPM之间的换算
  • 再见Playwright!谷歌官方Chrome DevTools MCP正式发布,AI编程效率再翻倍
  • Markdown 之——清单の语法
  • “计算理论之美”课程笔记一:概率
  • “计算理论之美”课程笔记四:高维空间组合优化
  • git分支从dev迁移到maser
  • Centos7安装ffmpeg
  • 2025.9.26总结
  • C++ 与现代并发编程:性能与复杂度的平衡艺术
  • 第五天
  • 926
  • 20250736
  • sql优化个人总结
  • Powershell 入门
  • 漏洞赏金猎手的新年目标实战指南
  • 数学作业
  • lc1037-有效的回旋镖