JVM---分代管理

我们常说的gc,就是垃圾会收集机制,他负责是讲系统中的没有引用的对象回收,也就是主要作用于堆内存和方法区,当然从jdk1.8以后,jvm将元空间替代了方法区,永久带不存在了,并且将静态池和常量池移动到了对内存中。
在java1.7及以前虚拟机中,我们会把java内存分成 新生代 和 老年代,还有方法区。新生代存放刚刚新建的实例对象,老年代存放通过指定次数gc后任然存活的对象或者是实例对象需要很大的空间,而新生代无法存放的对象,而永久代这事存放类的对象信息,常量池和静态变量,而这三个地方的数据,永久代是最难清理的,且清理的条件可可复杂。


1、新生代

新生代存在于对内存中,且分成了三块,分别是eden,和2块幸存区。eden翻译过来就是伊甸园,很形象,表示所有的新生对象多是在这个地方的,其他俩个幸存区,必然有一个是空着的,用来存放minor gc 幸存的对象。
这三块区域初始的比值是8:1:1。他们的gc算法是 复制–清理 算法,而复制-清理算法的大致过程是:新生的对象被放到eden区,但是eden区域是有限的啊,所以,当eden区内存满的时候,触发gc过程。(当然,这发生新生代的gc之前,老年代还需要进行一些处理)
GC触发后,虚拟机首先把eden区和其中一块存放对象的幸存区的所有存活对象 复制 到临时的幸存区,然后,对 eden 和 被复制之后的幸存区进行清理操作,这样会把所有的为存活对象的都清理掉。那么,一次这样的新生代GC就完成了。
这其中,经历了一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值