JVM----GC(垃圾回收)详解

这篇具有很好参考价值的文章主要介绍了JVM----GC(垃圾回收)详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Automatic Garbage Collection(垃圾回收)简介

Automatic Garbage Collection (自动垃圾回收)是JVM的一个特性,JVM会启动相关的线程,该线程会轮训检查heap memeory,并确定哪些是未被引用的(unreferenced),即未被使用的;哪些是被引用的(referenced),即正在使用的。
在C/C++语言中,对象内存的分配与回收,是手动进行分配与回收的,而在JVM中,JVM会使用垃圾回收器(一个线程),来自动对内存进行分配与回收。

二、GC基本机制简介

GC机制中,最常见最基本的方案是标记–清除法(Marking–Deletion),示例如下:

Step 1 : Marking

在垃圾回收机制中第一步通常是标记(Marking) ,该标记用于确认哪些是被引用的,标记哪些是未被引用的。
JVM----GC(垃圾回收)详解,JAVA,# JVM,jvm,java
被引用的对象被标记为蓝色,未被引用的对象被标记为黄色。所有的对象都会被扫描用于做标记,有的时候该操作会非常耗时。

Step 2 :Normal Deletion

该节点会删除未被标记的对象,用于释放内存空间。
JVM----GC(垃圾回收)详解,JAVA,# JVM,jvm,java

Step 2a : Deletion with Compacting

为了进一步提高性能,除了删除未引用的对象外,还可以压缩剩余的引用对象。通过将引用的对象移动到一起,这使得新的内存分配更加容易和快捷。
JVM----GC(垃圾回收)详解,JAVA,# JVM,jvm,java

三、JVM Generations

为了提升JVM的性能,堆(heap memory )被分解为更小的部分或代(generations),即Young Generation, Old or Tenured Generation, and Permanent Generation。示例图如下:
JVM----GC(垃圾回收)详解,JAVA,# JVM,jvm,java
Young Generation是新对象被分配的内存区域,并被标记上年龄值。当Young Generation内存空间被充满,将会触发一次minor garbage collection(触发的条件根据选择的垃圾回收器不同而不同)。minor garbage collection可以通过相关设置值来优化; 如果Young Generation中都是未被使用的对象(dead object),minor garbage collection效率会非常高,垃圾回收会很快。一些幸存的object会被标记年龄值,并最终转移到Old or Tenured Generation(老一代)。
Stop the World Event 每一次minor garbage collection 都会触发“Stop the World Event ” 事件,这会导致应用中所有的线程会暂停,知道该垃圾回收操作完成。
Old Generation 会存储长期存活的object,一般的,会给对象的年龄值设置一个临界点,当对象的年龄值达到该临界点的时候,会被移到 Old Generation,最终当 Old Generation内存空间充满的时候会触发一次major garbage collection。
Major garbage collection 也会触发“Stop the World Event ” 事件,Major garbage collection会非常慢,因为这涉及所有的 对象。
Permanent Generation 会存储一些JVM运行所需要的元数据,这些元数据描述了classes(类)、methods(方法)等。文章来源地址https://www.toymoban.com/news/detail-697264.html

到了这里,关于JVM----GC(垃圾回收)详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JVM】JVM垃圾回收GC相关参数说明

    -XX:+PrintCommandLineFlags : 输出JVM启动参数 -XX:+UseSerialGC :在新生代和老年代使用串行收集器 -XX:SurvivorRatio :设置eden区大小和survivior区大小的比例 -XX:NewRatio :新生代和老年代的比 -XX:+UseParNewGC :在新生代使用并行收集器 -XX:+UseParallelGC :新生代使用并行回收收集器 -XX:+UseParallelO

    2024年02月04日
    浏览(35)
  • JVM:垃圾回收机制(GC)

    引用计数算法:         在对象中添加一个引用计数器,当每有一个地方引用它时,计数器值加一。当引用失效时,计数器值就减一。当一个对象的计数器为零时,表示该对象没有被任何其他对象引用,因此可以被释放。 优点 :是可以及时回收垃圾对象,避免内存泄漏,且

    2024年01月19日
    浏览(33)
  • JVM学习 GC垃圾回收机制 (堆内存结构、GC分类、四大垃圾回收算法)

    🤖 作者简介: 努力的clz ,一个努力编程的菜鸟 🐣🐤🐥   👀 文章专栏: 《JVM 学习笔记》 ,本专栏会专门记录博主在学习 JVM 中学习的知识点,以及遇到的问题。   🙉 文章详情: 本篇博客是学习 【狂神说Java】JVM快速入门篇 的学习笔记,关于 GC垃圾回收机制 (堆内存结

    2023年04月19日
    浏览(29)
  • 02JVM_垃圾回收GC

    在 堆 里面存放着java的所有对象实例,当对象为“死去”,也就是不再使用的对象,就会进行垃圾回收GC 1.1引用计数器 介绍 在对象中添加一个引用计数器,当一个对象被其他变量引用时这个对象的引用计数器加1。当某个变量不再引用这个对象时引用计数器减1。当这个引用计

    2024年02月09日
    浏览(27)
  • 深入学习JVM —— GC垃圾回收机制

            前面荔枝已经梳理了有关JVM的体系结构和类加载机制,也详细地介绍了JVM在类加载时的双亲委派模型,而在这篇文章中荔枝将会比较详细地梳理有关JVM学习的另一大重点——GC垃圾回收机制的相关知识,重点了解的比如对象可达性的判断、四种回收算法、分代回收

    2024年02月14日
    浏览(34)
  • 【JAVAEE】JVM中垃圾回收机制 GC

      博主简介:想进大厂的打工人 博主主页: @xyk: 所属专栏: JavaEE初阶   上篇文章我们讲了java运行时内存的各个区域。 传送门:【JavaEE】JVM的组成及类加载过程_xyk:的博客-CSDN博客 对于程序计数器、虚拟机栈、本地方法栈这三部分区域而言,其生命周期与相关线程有关,随线

    2024年02月16日
    浏览(36)
  • JVM解密: 解构类加载与GC垃圾回收机制

    JVM 其实是一个 Java 进程,该进程会从操作系统中申请一大块内存区域,提供给 Java 代码使用,申请的内存区域会进一步做出划分,给出不同的用途。 其中最核心的是栈,堆,方法区这几个区域: 堆,用来放置 new 出来的对象,类成员变量。 栈,维护方法之间的调用关系,放

    2024年02月10日
    浏览(32)
  • 【Java JVM】垃圾回收

    当前大部分的垃圾收集器都遵循着 “分代收集” (Generational Collection) 的理论进行设计的, 建立在 2 个分代假设之上 弱分代假说 (Weak Generational Hypothesis): 绝大多数对象都是朝生夕灭的 强分代假说 (Strong Generational Hypothesis): 熬过越多次垃圾收集过程的对象就越难以消亡 根据这

    2024年03月14日
    浏览(32)
  • JVM基础知识(内存区域划分,类加载,GC垃圾回收)

    目录 内存区域划分 JVM中的栈 JVM中的堆 程序计数器 方法区(元数据区) 给一段代码,某个变量在哪个区域上? 类加载 类加载时机 双亲委派模型 GC 垃圾回收机制 GC 实际工作过程 1.找到垃圾/判定垃圾 1.可达性分析(Java中的做法) 2.引用计数 2.清理垃圾 1.标记清除 2.复制算法 3.标记整

    2024年02月07日
    浏览(48)
  • 小研究 - 浅析 JVM 中 GC 回收算法与垃圾收集器

    本文主要介绍了JVM虚拟机中非常重要的两个部分,GC 回收算法和垃圾收集器。从可回收对象的标记开始,详细介绍 了四个主流的GC算法,详细总结了各自的算法思路及优缺点, 提出了何种情况下应该通常选用哪种算法。 目录 1 标记可回收对象 1.1 引用计数器 1.2 可达性分析

    2024年02月14日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包