首页 > 其他分享 >空间分配担保机制

空间分配担保机制

时间:2022-11-17 00:33:30浏览次数:42  
标签:对象 年代 担保 GC 空间 机制 分配 Minor

抛几个问题:

1.谁进行空间担保?

JVM使用分代收集算法,将堆内存划分为年轻代和老年代,两块内存分别采用不同的垃圾回收算法,空间担保指的是老年代进行空间分配担保

2.什么是空间分配担保?

  • 在发生Minor GC之前,虚拟机会检查老年代最大可用的连续空间是否大于新生代所有对象的总空间,
  • 如果大于,则此次Minor GC是安全的
  • 如果小于,则虚拟机会查看HandlePromotionFailure设置值是否允许担保失败。如果HandlePromotionFailure=true,那么会继续检查老年代最大可用连续空间是否大于历次晋升到老年代的对象的平均大小,如果大于,则尝试进行一次Minor GC,但这次Minor GC依然是有风险的;如果小于或者HandlePromotionFailure=false,则改为进行一次Full GC。

3.为什么要进行空间担保?

是因为新生代采用复制收集算法,假如大量对象在Minor GC后仍然存活(最极端情况为内存回收后新生代中所有对象均存活),而Survivor空间是比较小的,这时就需要老年代进行分配担保,把Survivor无法容纳的对象放到老年代。老年代要进行空间分配担保,前提是老年代得有足够空间来容纳这些对象,但一共有多少对象在内存回收后存活下来是不可预知的,因此只好取之前每次垃圾回收后晋升到老年代的对象大小的平均值作为参考。使用这个平均值与老年代剩余空间进行比较,来决定是否进行Full GC来让老年代腾出更多空间。

标签:对象,年代,担保,GC,空间,机制,分配,Minor
From: https://www.cnblogs.com/javatql/p/16898089.html

相关文章

  • c++中的分配子allocator的注意点
    stl中说所有属于同一种类型的分配子对象都是等价的这也就是说由同一分配子所分配出的对象可以被视为拥有相同的内存结构而可以被同一个析构函数所销毁这意味着自己定义的......
  • python垃圾回收机制
    python垃圾回收机制主要分为:1.引用计数2.标记清除3.分代回收python的引用计数机制:python是根据对象的引用计数是否为0,来进行垃圾回收,释放内......
  • JS的垃圾回收机制
    1、概述垃圾回收机制(GarbageCollection)简称GC。所谓垃圾回收机制就是清理内存的方式。在JS中,我们创建变量的时候,JS引擎会自动给对象分配对应的内存空间,不需要我们......
  • C++ folly库解读(三)Synchronized —— 比std::lock_guard/std::unique_lock更易用、功
    目录传统同步方案的缺点folly/Synchronized.h简单使用Synchronized的模板参数withLock()/withRLock()/withWLock()——更易用的加锁方式升级锁ulock()和withULo......
  • 【推荐实践】阿里文娱面向用户增长的信息流分发机制
    今天给大家带来阿里文娱-人工智能部-信息流推荐的天师所做的分享《阿里文娱面向用户增长的信息流分发机制》,关注推荐算法、信息流分发、用户增长的伙伴们别错过啦!(到小程序:......
  • Prism通过反射机制自动注册对话视图模型
    摘要说明在使用WPF+Prism开发中,有时会需要使用到一些弹窗服务,而在Prism当中,我们使用Dialog是需要注入到IOC容器当中的,传统的写法如下:而当Dialog过多时或者需要新增一个......
  • js闭包问题、js事件循环机制、async与defer、同步与异步模式
    js闭包问题定义:闭包就是有权访问其他函数作用域内的其他变量的函数。实现机制:在访问变量的函数中return一个匿名函数,这时匿名函数的作用域链将指向该函数的作用域。!!!由于......
  • 类加载机制
    类的生命周期首先我们先看类的生命周期类的加载过程包含了加载、验证、准备、解析、初始这五个阶段,其中除了解析阶段其他四个阶段的发生顺序都是确定的,因为解析阶段在某......
  • 有趣的 Go HttpClient 超时机制
    hello,大家好呀,我是既写Java又写Go的小楼,在写Go的过程中经常对比这两种语言的特性,踩了不少坑,也发现了不少有意思的地方,今天就来聊聊Go自带的HttpClient的超时机制......
  • JAVA系列之类加载机制详解
    类的加载机制?双亲委派机制?什么是类加载器?自定义类加载器有哪些应用场景?通常,在关于Java的类加载部分会遇到以上疑问,本文将对类加载重要部分做详细介绍,包括重要的......