Java垃圾收集流程
来源:互联网 发布:saa7130 tv card软件 编辑:程序博客网 时间:2024/06/06 20:23
Java具有良好的垃圾收集特性,也就是GC是整个Java之中的最重要的安全保证,它可以保证即使不那么精深的开发者也能够写出合理的代码。整个JVM的GC的处理机制:对不需要的对象进行标记,而后进行清除。
JDK1.8之后,Java堆内存分为了三块:
· 年轻代:新对象和没达到一定年龄的对象都在年轻代;
· 老年代:被长时间使用的对象,老年代的内存空间应该要比年轻代更大;
· 元空间:一些方法中的操作临时对象,动态加载处理时产生的对象,直接使用物理内存;(1.7之前永久代,使用虚拟机内存)
对于整个的GC流程里面,那么最需要处理的就是年轻代与老年代的内存清理操作,而元空间(永久代)都不在GC范围内;
1、当有一个新的对象产生是,那么对象一定需要内存空间,于是现在就需要为该对象进行内存空间的申请;
2、首先会判断伊甸园是否有内存空间,如果此时有内存空间,则直接将新对象保存在伊甸园;
3、如果此时伊甸园的内存空间不足,那么会自动执行一个Minor GC操作,将伊甸园区的无用内存空间清理,清理之后继续判断伊甸园的内存空间不足,如果内存空间充足,则将新的对象之间在伊甸园区进行空间的分配;
4、如果执行了Minor GC之后发现伊甸园区的内存依然不足,那么这个时候会对存活区进行判断,如果存货区有剩余空间,则将伊甸园区的部分活跃对象保存在存货去,那么随后继续判断伊甸园区的内存空间是否充足,如果充足,则进行空间的分配。
5、如果此时存活区也已经没有内存空间了,则继续判断老年区,如果老年区空间充足,则将在存活区的活跃对象保存到老年区,而后存活区就有空余空间,随后伊甸园区将活跃对象保存到存活区中,而后在伊甸园区为新的对象分配空间。
6、如果此时老年区的空间也满了,那么这个时候将产生Major GC(Full GC),进行老年代的空间的内存清理。
7、如果老年区执行了Full GC之后发现依然无法进行新对象的空间分配,就会产生“OutofMemoryError”。
- Java垃圾收集流程
- 【Java】Java垃圾收集
- Java垃圾收集和Android垃圾收集
- java垃圾收集算法
- java垃圾收集器
- java垃圾收集算法
- java垃圾收集算法
- Java垃圾收集机制
- Java垃圾收集机制
- Java虚拟机垃圾收集
- java垃圾收集算法
- java垃圾收集解析
- java垃圾收集算法
- 浅谈Java垃圾收集
- Java垃圾收集算法
- Java垃圾收集
- java垃圾收集
- java 垃圾收集
- 电脑能上QQ,但是浏览器打不开网页
- js 一道网格路径的题
- CRichEditView改变字体的颜色和字体
- Lucene 基础理论
- 拓扑排序
- Java垃圾收集流程
- 使用libsvm进行回归预测
- tomcat部署简单的html静态网页
- 数据库连接
- 替换空格
- ElasticSearch基本概念介绍(二)
- 安装mxnet
- 2016关于职场的几条真理(上)
- 设置桌面壁纸时 'IActiveDesktop' : undeclared identifier 的处理