jvm空间分配担保机制
新生代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空间分配担保机制相关推荐
- 深入理解JVM—垃圾回收机制
一.前言 明确垃圾收集器关注的部分:堆和方法区.着重学习如何确定哪些垃圾需要回收.垃圾回收算法以及GC触发条件. 二.如何确定哪些垃圾需要回收 1.引用计数算法 在对象中添加一个引用计数器,每当有一个 ...
- JVM内存分配机制详解
目录 1. 对象创建流程(TODO) 1.1 jvm分配内存 1.2 设置对象头 1.2.1 对象头实例 1.2.2 指针压缩 2.JVM对象内存分配 2.1 逃逸分析和标量替换 2.1.1 逃逸分析 ...
- jvm深入理解:内存分配与回收策略(优先在Eden分配、大对象直接进入老年代、长期存活的对象将进入老年代、动态对象年龄判定、空间分配担保)
出入:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) Java技术体系的自动内存管理,最根本的目标是自动化地解决两个问题:自动给对象分配内存以及自动回收分配给对象的内存. 象的内存分配,从 ...
- 【深入理解JVM】JVM垃圾回收机制
最近又回头翻了翻<java编程思想>.有关垃圾回收机制的问题还没有总结过,刚好今天周六,总结一下吧. 1.垃圾回收的目的 垃圾回收的目的是查找和回收(清理)无用的对象,以便让JVM更有效的 ...
- JVM内存区域(Java内存区域)、JVM垃圾回收机制(GC)初探
一.JVM内存区域(Java内存区域) 首先区分一下JVM内存区域(Java内存区域)和Java内存模型(JMM)的概念.Java线程之间的通信采用的是共享内存模型,这里提到的共享内存模型指的就是Ja ...
- JVM垃圾清理机制详解 ✨ 每日积累
JVM垃圾清理机制详解 jvm内存结构中有一块地方叫做堆内存,里面存放着我们应用创建的对象,但是我们堆内存有限,对象在运行的时候持续创建,jvm有垃圾清理机制来清理对象确保堆内存的可用空间. 清理流程 ...
- 【JVM】JVM垃圾回收机制GC
文章目录 JVM垃圾回收机制 一.堆内存区域划分 1.1内存分配策略 1.2永久代(Permanent Generation) 1.3元空间(MetaSpace) 二.标记算法 2.1引用计数算法 2 ...
- JVM垃圾回收机制GC理解
目录 JVM垃圾回收 分代收集 如何识别垃圾 引用计数法 可达性分析法 引用关系四种类型: 强.软.弱.虚 强引用 软引用 SoftReference 弱引用 WeakReference WeakHa ...
- JVM垃圾回收机制(超级无敌认真好用,万字收藏篇!!!!)
文章目录 JVM垃圾回收机制 1 判断对象是否存活的算法 1.1 引用计数器算法 1.2 可达性分析算法 2 对象的四种引用方式 2.1 强引用 2.2 软引用 2.3 弱引用 2.4 虚引用 3 垃 ...
最新文章
- DevExpress A field with the name '' was not found on the selected data source.
- html登录界面cookie,HTML中使用cookie保存登录账户
- 关于日志文件的一些处理
- json中的值类型及输出对象的所有名称和对应的值
- Linux 安装完毕要做的事
- 一篇文章把Self-Attention与Transformer讲明白
- Maven与IDEA结合
- 查看数据库 MySQL 的版本信息的命令语句
- 使用python数据分析_如何使用Python提升您的数据分析技能
- Java入门学习思维导图
- 生成top图_最小生成树(Kruskal和Prim算法)
- poj 2153 Rank List
- C语言之共享内存shm_open(二十五)
- 传感器融合sensor fusion
- 现代数字图像处理作业----对lena.bmp图像采用高频强调滤波增强方法,并分析方法的效果。(理想、巴特沃斯、高斯) 其结果好不好?能否有改善的方法?
- 步进电机、伺服电机、舵机的理解
- (三)Detecting Spacecraft Anomalies Using LSTMs and Nonparametric Dynamic Thresholding
- memcpy和memset使用时需要区分的注意点
- 基于神经网络rnn模型的心脏病预测案例详细教程
- 服务器可以用无线上网卡么,4G无线上网卡哪个好用 4g无线上网卡使用方法【详解】...