专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

HotSpot VM垃圾收集器

最常用的HotSpot VM垃圾收集器是分代垃圾收集。该方案是基于两个观察事实。

  • 大多数分配对象的存活时间很短。
  • 存活时间久的对象很少引用存活时间短的对象。

上述两个观察事实统称为弱分代假设(Weak Generational Hypothesis)。基于此假设,HotSpot VM将堆分成2个物理去。

1、新生代:大多数创建的对象被分配到新生代中,与整个Java堆相比,通常新生代收集(主要是Minor GC)之后的存活对象时间短,垃圾收集的效率高。

  新生代分为两块Eden和Survior。新创建的对象被分配到Eden中,当Eden中的空间使用完以后,就会运行Minor GC将Eden中的存活对象复制到Survivor中的To空间,同时Survivor空间中的From区域内如果有没有被回收的对象,也会被copy到To空间中,老年代中被修改过指针应用的对象也会被copy到Survivor区域,最后From和To交换位置。通常可以采用Serial收集器和Parallel收集器来实现。前者是单线程的,后者是多线程的支持并发。在垃圾回收的过程中,程序的运行是被终止的,等Serial GC或parallel GC执行完以后,程序继续执行。

2、老年代:新生代中长期存活的对象最后被提升到老年代。老年代的空间比新生代的大,而空间占用的增长速度比新生代慢。老年代主要采用Ful GC来完成垃圾收集,Full GC的执行频率低,但是一旦发生,执行时间就会很长。

  当Survivor中可能不足以容纳Eden和另一个Survivor中存活对象时。如果Survivor中的存活对象溢出,多余的对象将被移到老年代。当老年代已经如法容纳更多的对象时,就会调用Full GC来进行垃圾回收。在垃圾回收的过程中,程序的运行是被终止的,等Full GC执行完以后,程序继续执行。

3、永久代:这是HotSpot VM内存中的第3块区域。用户程序创建的对象最终并不会从老年代移送到永久代。相反,HotSpot VM只是用它来存储元数据,例如类的数据结构、保留字符串等。

文章永久链接:https://tech.souyunku.com/23818

未经允许不得转载:搜云库技术团队 » HotSpot VM垃圾收集器

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们