Java中的垃圾收集(JVM)

Java中的垃圾收集过程

Java中的垃圾回收分配和放行内存,这样开发人员就不需要编写一个显式的程序来完成内存管理,这是Java编程的主要优点之一。

每当Java程序在JVM,对象在堆是专用于程序的内存的一部分。最终,一些对象将不再需要。这个垃圾收集器找到这些未使用对象和删除用来释放记忆。

这个垃圾收集器会看到堆内存,标识正在使用的对象和未使用的对象,并删除未使用的对象。在用对象或引用对象意味着程序的某些部分仍然维护指向该对象的指针。

程序的任何部分不再引用未使用的对象或未引用的对象。所以未引用对象使用的内存可以通过执行垃圾回收来回收。

内存的分配可以在3个基本程序:

  1. 标记
  2. 正常缺失
  3. 紧致删除

标识-识别正在使用的、不是由垃圾收集器使用的内存块的过程,这是第一步。

正常删除-删除未引用对象的过程,将引用对象和指针保留到空闲空间。

使用压缩删除-除了删除未引用的对象,它还将压缩其余的引用对象,方法是将对象移动到一起,以使

新的内存分配更容易,速度更快。

JVM堆存储器

年轻一代

新创建的对象从年轻一代开始。年轻一代也被称为托儿所,因为新的对象开始在这里生活。年轻一代进一步细分为一个伊甸园空间,在那里所有新的对象开始,和两个幸存者空间,其中的对象是从伊甸园移动后幸存一个垃圾收集周期。当对象是从年轻一代收集的垃圾时,这些称为小垃圾收集事件,

1.伊甸园空间

所有新的物体首先是在伊甸园空间中创建的。当一个小GC集合达到JVM决定的阈值时,它就会启动。引用对象从伊甸园空间移动到第一个幸存者空间(“伊甸园”和“从”到“)。清除伊甸园空间时,未引用的对象将被删除。

2.幸存者0(S0)和幸存者1(S1)

两个幸存者空间(从和到)都是空的。 当一个小GC集合发生时,所有引用的对象都被移动到幸存者空间。 GC结束后,将交换幸存者空格“from”和“to”角色(名称)。S1是上一次垃圾收集(GC)期间的“to”角色。N 现在S1被填充并接受‘From’角色,而S0是空的,并且将接受‘to’角色。

老一代

在一个小GC之后,当老化对象达到一定的年龄阈值(默认情况下,现代JVM阈值设置为15个GC周期)时,它们将从年轻一代提升到老一代。长寿的对象最终会从年轻一代移到老一代。当小型GC继续出现时,对象将继续被提升到旧代空间,并且它将开始被填充,并将出现一个主要GC。当对象是从老一代收集的垃圾时,就会发生主要的垃圾收集。

永久世代

元数据(如类和方法)存储在永久生成中。不再使用的类可能会从永久生成中回收垃圾。在完全垃圾收集事件期间,所有代中未使用的对象都是垃圾收集。

垃圾收集类型(GC)

清除堆内存中不同部分的垃圾收集事件通常称为小事件、主要事件和完整GC事件。但是,由于“次要”、“主要”和“完整的GC”这几个术语被广泛使用,而且没有一个恰当的定义,我们将看看对所有这些GC的解释。

小GC

从年轻一代空间收集垃圾称为小GC。小GC清洁年轻一代。当JVM无法为新对象分配空间时,即当Eden空间变得满时,就会触发小GC。因此,分配率越高,发生的GC越少。

主要GC

主要的GC正在清理固定的空间(旧空间)。随着老一代的规模越来越大,GC发生的频率要比年轻一代少。当对象从老一代消失时,我们说“主要GC”已经发生了。老一代的收藏家将尝试预测何时需要收集,以避免年轻一代的推广失败。

收集器跟踪旧代的填充阈值,并在此阈值通过时开始收集。如果这个阈值不足以满足晋升要求,那么就会触发“FullGC”。

全GC

Full GC正在清理整个堆–包括年轻空间和旧空间。很多人会被专业(只有老的一代)和完整的GC(Young+old(Heap))混淆。FullGC涉及到在收集和压缩老一代之后,将所有活的对象从年轻一代推广到老一代。完整的GC将是一个停止-世界暂停。停止世界正在确保在收集器运行时没有分配新的对象,并且对象不会突然变得不可访问。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java盘鱼宴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值