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

7-1JVMCG垃圾回收

一、GC的作用与原理

​核心功能​

自动识别并回收堆内存中不再被引用的对象,释放内存空间。
避免手动管理内存的复杂性(如C/C++中的delete/free操作),降低内存泄漏风险。
​判断对象可回收的方法​

​可达性分析算法:从GC Roots(如虚拟机栈、静态变量、本地方法栈等)出发,遍历对象引用链,无法到达的对象标记为可回收。
替代了传统的引用计数法(易循环引用导致内存泄漏)。

二、分代管理与GC类型

JVM将堆内存划分为不同代区,针对不同生命周期对象采用差异化回收策略:

​新生代(Young Generation)​​

​区域划分:Eden区(新对象分配地)、Survivor区(S0/S1,存活对象过渡区)。
​Minor GC/Young GC:当Eden区满时触发,存活对象复制到Survivor区,多次存活后晋升老年代。
​特点:高频、快速,采用复制算法​(减少碎片)。
​老年代(Old Generation)​​

​Major GC/Old GC:CMS收集器特有,单独回收老年代(其他收集器通常直接触发Full GC)。
​Full GC:回收整个堆(含方法区/元空间),触发条件包括:
老年代空间不足。
方法区(永久代)内存不足(JDK8前)。
System.gc()显式调用(可通过参数禁用)。

三、常见垃圾收集器

JVM提供多种收集器,适应不同场景需求:

​新生代收集器​

​Serial:单线程,适合客户端应用(低资源消耗)。
​ParNew:多线程版Serial,配合CMS使用。
​Parallel Scavenge:吞吐量优先,适合后台计算任务。
​老年代收集器​

​CMS(Concurrent Mark Sweep)​:并发标记清除,减少停顿时间,但易碎片化。
​G1(Garbage-First)​:分区回收,兼顾吞吐与低延迟,适合大堆内存。
​全堆收集器​

​ZGC/Shenandoah:超低延迟(毫秒级停顿),适用于实时系统。

四、GC调优策略

​目标选择​

​吞吐量优先:如Parallel Scavenge + Parallel Old,适合批处理任务。
​低延迟优先:如G1/CMS,适合Web服务。
​关键参数调整​

新生代与老年代比例(-XX:NewRatio)。
Survivor区比例(-XX:SurvivorRatio)。
堆大小(-Xms初始堆、-Xmx最大堆)。
​监控工具​

jstat查看GC频率与耗时。
VisualVM分析堆内存分布。

五、GC算法对比

​标记-清除:简单但碎片化严重。
​复制:高效无碎片,但内存利用率低(适合新生代)。
​标记-整理:解决碎片问题,适合老年代(如Serial Old)。
​分代收集:综合不同算法,适应对象生命周期差异。

相关文章:

  • 【文献阅读】A Survey Of Resource-Efficient LLM And Multimodal Foundation Models
  • 如何保证 Redis 缓存和数据库的一致性?
  • 在编译Linux的内核镜像和模块时,必须先编译内核镜像,再编译模块,顺序不可随意调整的原因
  • 备战蓝桥杯Day11 DFS
  • React 常见面试题及答案
  • Mysql系统表
  • 【考试大纲】中级信息安全工程师考试大纲
  • HTMLS基本结构及标签
  • 神经网络之CNN图像识别(torch api 调用)
  • 建易WordPress
  • 算法-二叉树篇23-二叉搜索树中的插入操作
  • 夜天之书 #106 Apache 软件基金会如何投票选举?
  • Java 大视界 -- Java 大数据在智能安防入侵检测与行为分析中的应用(108)
  • AF3 DataPipeline类process_core 方法解读
  • sql server 版本更新日期
  • 经典算法 金币阵列问题
  • 【SpringCloud】黑马微服务学习笔记
  • 考虑复杂遭遇场景下的COLREG,基于模型预测人工势场的船舶运动规划方法附Matlab代码
  • 【Nginx】在Windows服务器上用Nginx部署Vue前端全流程(附避坑指南)
  • 全监督、半监督、弱监督、无监督
  • 个人网站做淘宝客会怎样/怎么做一个网站
  • 山东政府网站建设特色/腾讯体育nba
  • 网站开发php工程师/泰州网站整站优化
  • 上海小程序开发设计/萌新seo
  • wordpress做购物网站/seo业务培训
  • 唐山做网站的电话/搜索引擎营销的特点是什么