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

java垃圾回收机制介绍

394707aa6ec64c3c8af729e24ff91ca8.jpgJava垃圾回收机制(Garbage Collection, GC)是Java编程语言中的一项重要特性,它自动管理内存,释放不再使用的对象

 

 

  1. 堆(Heap):

 

      • Java虚拟机(JVM)中用于存储对象实例的内存区域。

 

      • 垃圾回收主要发生在堆上。

 

  2. 年轻代(Young Generation):

 

      • 堆的一部分,用于存放新生成的对象。

 

      • 通常分为Eden区和两个Survivor区(S0和S1),通过复制算法进行垃圾回收。

 

  3. 老年代(Old Generation/Tenured Generation):

 

      • 堆的另一部分,用于存放经过多次年轻代GC后仍然存活的对象。

 

      • 通常使用标记-清除或标记-整理算法进行垃圾回收。

 

  4. 永久代(PermGen)/元空间(Metaspace)(Java 8及以后):

 

      • 在Java 8之前,永久代用于存储类的元数据信息(如类名、访问修饰符、常量池等)。

 

      • Java 8及以后,永久代被元空间取代,元空间使用本地内存(Native Memory)而不是堆内存来存储类的元数据信息。

 

  5. 垃圾回收器(Garbage Collector, GC):

 

      • 实现垃圾回收算法的组件,负责自动回收不再使用的内存。

 

      • Java提供了多种垃圾回收器,如Serial GC、Parallel GC、CMS GC、G1 GC等。

 

  6. 引用计数(Reference Counting):

 

      • 一种简单的垃圾回收算法,通过维护每个对象的引用计数来判断对象是否可以被回收。

 

      • 但由于无法解决循环引用问题,在Java中并未采用。

 

  7. 可达性分析算法(Reachability Analysis Algorithm):

 

      • Java采用的垃圾回收判断算法,通过从根节点(GC Roots)开始遍历对象图,判断对象是否可达。

 

      • 不可达的对象被认为是垃圾,可以被回收。

 

  8. 标记-清除(Mark-Sweep):

 

      • 一种垃圾回收算法,首先标记所有可达的对象,然后清除所有未标记的对象。

 

      • 但会导致内存碎片问题。

 

  9. 标记-整理(Mark-Compact):

 

      • 在标记-清除的基础上,对存活的对象进行整理,消除内存碎片。

 

  10. 复制算法(Copying Algorithm):

 

      • 将内存分为两块,每次只使用其中一块分配对象。

 

      • 当这块内存用完时,复制存活的对象到另一块内存,并清空当前块。

 

      • 年轻代通常使用这种算法。

 

  11. 分代回收(Generational Garbage Collection):

 

      • 根据对象的生命周期长短,将堆内存划分为不同的代(年轻代、老年代),并根据代的特性采用不同的垃圾回收策略。

 

  12. 并发(Concurrent)/并行(Parallel)垃圾回收:

 

      • 并发垃圾回收:垃圾回收线程与应用线程同时运行,减少停顿时间。

 

      • 并行垃圾回收:使用多个垃圾回收线程同时执行垃圾回收任


http://www.kler.cn/a/421624.html

相关文章:

  • 深度学习-53-AI应用实战之基于labelImg和labelme的手动标注
  • Android笔记【12】脚手架Scaffold和导航Navigation
  • React 路由与组件通信:如何实现路由参数、查询参数、state和上下文的使用
  • 小红书矩阵运营:怎么通过多个账号来提升品牌曝光?
  • 代码随想录-算法训练营day31(贪心算法01:分发饼干,摆动序列,最大子数组和)
  • 408——数据结构(持续更新)
  • linux模拟试题
  • Seatunnel解决ftp读取json文件无法读取数组以及格式化之后的json无法解析的问题
  • TypeScript和JavaScript的区别
  • 如何使用brew安装phpredis扩展?
  • 零基础学安全--Burp Suite(4)proxy模块以及漏洞测试理论
  • CTF之WEB(php弱类型绕过)
  • openGauss极致RTO流程讲解及运维方法
  • vue实现懒加载
  • 30分钟学会正则表达式
  • Wwise SoundBanks内存优化
  • renderExtraFooter 添加本周,本月,本年
  • 数据库——创建索引的原则
  • 学成在线day08
  • k8s 亲和性之Affinity
  • 《Python基础》之Pandas库
  • PostgreSQL认证培训需要什么条件
  • 上天入地,智能诊断,多语言支持,璞华IETM打造产品技术信息管理极致用户体验
  • Python虚拟环境管理工具:Pipenv
  • Linux-Ubuntu16.04摄像头 客户端抓取帧并保存为PNG
  • Golang教程第24篇(语言接口)