新生代Minor GC后剩余存活对象太多,无法放入Survivor区中,此时就必须将这些存活对象直接转移到老年代去,如果此时老年代空间也不够怎么办?
1、执行任何一次Minor GC之前,JVM会先检查一下老年代可用内存空间,是否大于新生代所有对象的总大小,因为在极端情况下,可能新生代Minor GC之后,新生代所有对象都需要存活,那就会造成新生代所有对象全部要进入老年代;
2、如果老年代的可用内存大于新生代所有对象总大小,此时就可以放心大胆的对新生代发起一次Minor GC,因为Minor GC之后即使所有对象都存活,Survivor区放不下了,也可以转移到老年代去;
3、如果执行Minor GC之前,检测发现老年代的可用空间已经小于新生代的全部对象总大小,那么就会进行下一个判断,判断老年代的可用空间大小,是否大于之前每一次Minor GC后进入老年代的对象的平均大小,如果小于,这时要进行一次Full GC。如果判断发现老年代的内存大小,大于之前每一次Minor GC后进入老年代的对象的平均大小,那么就是说可以冒险尝试一下Minor GC,但是此时真的可能有风险,那就是Minor GC过后,剩余的存活对象的大小,大于Survivor空间的大小,也大于老年代可用空间的大小,老年代都放不下这些存活对象了,此时就会触发一次“Full GC”;
所以老年代空间分配担保机制的目的?也是为了避免频繁进行Full GC;
4、如果Full GC之后,老年代还是没有足够的空间存放Minor GC过后的剩余存活对象,那么此时就会导致“OOM”内存溢出 ;

jvm空间分配担保机制相关推荐

  1. 深入理解JVM—垃圾回收机制

    一.前言 明确垃圾收集器关注的部分:堆和方法区.着重学习如何确定哪些垃圾需要回收.垃圾回收算法以及GC触发条件. 二.如何确定哪些垃圾需要回收 1.引用计数算法 在对象中添加一个引用计数器,每当有一个 ...

  2. JVM内存分配机制详解

    目录 1. 对象创建流程(TODO) 1.1 jvm分配内存 1.2 设置对象头 1.2.1 对象头实例 1.2.2 指针压缩 2.JVM对象内存分配 2.1 逃逸分析和标量替换 2.1.1 逃逸分析 ...

  3. jvm深入理解:内存分配与回收策略(优先在Eden分配、大对象直接进入老年代、长期存活的对象将进入老年代、动态对象年龄判定、空间分配担保)

    出入:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) Java技术体系的自动内存管理,最根本的目标是自动化地解决两个问题:自动给对象分配内存以及自动回收分配给对象的内存. 象的内存分配,从 ...

  4. 【深入理解JVM】JVM垃圾回收机制

    最近又回头翻了翻<java编程思想>.有关垃圾回收机制的问题还没有总结过,刚好今天周六,总结一下吧. 1.垃圾回收的目的 垃圾回收的目的是查找和回收(清理)无用的对象,以便让JVM更有效的 ...

  5. JVM内存区域(Java内存区域)、JVM垃圾回收机制(GC)初探

    一.JVM内存区域(Java内存区域) 首先区分一下JVM内存区域(Java内存区域)和Java内存模型(JMM)的概念.Java线程之间的通信采用的是共享内存模型,这里提到的共享内存模型指的就是Ja ...

  6. JVM垃圾清理机制详解 ✨ 每日积累

    JVM垃圾清理机制详解 jvm内存结构中有一块地方叫做堆内存,里面存放着我们应用创建的对象,但是我们堆内存有限,对象在运行的时候持续创建,jvm有垃圾清理机制来清理对象确保堆内存的可用空间. 清理流程 ...

  7. 【JVM】JVM垃圾回收机制GC

    文章目录 JVM垃圾回收机制 一.堆内存区域划分 1.1内存分配策略 1.2永久代(Permanent Generation) 1.3元空间(MetaSpace) 二.标记算法 2.1引用计数算法 2 ...

  8. JVM垃圾回收机制GC理解

    目录 JVM垃圾回收 分代收集 如何识别垃圾 引用计数法 可达性分析法 引用关系四种类型: 强.软.弱.虚 强引用 软引用 SoftReference 弱引用 WeakReference WeakHa ...

  9. JVM垃圾回收机制(超级无敌认真好用,万字收藏篇!!!!)

    文章目录 JVM垃圾回收机制 1 判断对象是否存活的算法 1.1 引用计数器算法 1.2 可达性分析算法 2 对象的四种引用方式 2.1 强引用 2.2 软引用 2.3 弱引用 2.4 虚引用 3 垃 ...

最新文章

  1. DevExpress A field with the name '' was not found on the selected data source.
  2. html登录界面cookie,HTML中使用cookie保存登录账户
  3. 关于日志文件的一些处理
  4. json中的值类型及输出对象的所有名称和对应的值
  5. Linux 安装完毕要做的事
  6. 一篇文章把Self-Attention与Transformer讲明白
  7. Maven与IDEA结合
  8. 查看数据库 MySQL 的版本信息的命令语句
  9. 使用python数据分析_如何使用Python提升您的数据分析技能
  10. Java入门学习思维导图
  11. 生成top图_最小生成树(Kruskal和Prim算法)
  12. poj 2153 Rank List
  13. C语言之共享内存shm_open(二十五)
  14. 传感器融合sensor fusion
  15. 现代数字图像处理作业----对lena.bmp图像采用高频强调滤波增强方法,并分析方法的效果。(理想、巴特沃斯、高斯) 其结果好不好?能否有改善的方法?
  16. 步进电机、伺服电机、舵机的理解
  17. (三)Detecting Spacecraft Anomalies Using LSTMs and Nonparametric Dynamic Thresholding
  18. memcpy和memset使用时需要区分的注意点
  19. 基于神经网络rnn模型的心脏病预测案例详细教程
  20. 服务器可以用无线上网卡么,4G无线上网卡哪个好用 4g无线上网卡使用方法【详解】...

热门文章

  1. bootstrap 栅栏系统
  2. css 单行文本溢出显示省略号
  3. Singleton Pattern (单例模式)
  4. 虚拟机模拟WIN2008创建域控制器与故障转移群集
  5. 用Linux Shell脚本轻松管理Radius服务器
  6. Linux系统下的数据镜像备份工具——Rsync
  7. 点击编辑的时候如何绑定DropDownList
  8. 直面故障,我们该怎么做?
  9. apache属于什么类型的软件
  10. 丢包和网络延迟对网络性能的影响