我眼中的GC理解

GC也就是java中的垃圾回收机制,每一次触发GC,系统将会自动的回收系统中无用的对象,将其的空间进行回收,达到释放内存的效果。而垃圾回收算法则是,将所有jvm堆中的对象组成一个树的形状,从GC的root开始遍历,如果可以找到的对象那么就是在活动和引用中的对象,而那些不能找到的对象则进行回收。

那么在jvm中又分为了几部分呢,分别有啥作用?

其中总共是分为了3个部分。青年代,老年代,持久代。在青年代中是存储了所有的new对象,里面有区分为Eden,from,to,其中Eden表示是的所有新生的对象存储区域,表示from,to我们通常称呼为幸存区,它指的是通过一次gc后能够不被回收而存活下来的对象。而通过一定次数的gc后,幸存区中的对象将被转移到老年代当中。而当老年代中的内存也满了,那么gc的时候停止所有的工作,将老年代中的内存也一次性处理干净。在持久代中主要是存一些类定义,方法啊,结构,代码之类的。

那么在青年代中和老年代中垃圾回收的采用的那种方法来收集呢?

在青年代中的eden--->Survivor(幸存)中是通过复制的算法来进行收集的。复制算法是将内存区域平分为了2个相同的区域,我们暂称为A,B区域,A中区域存放新生的所有对象,B中存放的则是将A中不可回收的复制过来。这样的好处的可以有效的避免了内存碎片的产生,而且效率高效。缺点则是我们需要空出一半内存空间来给B,也就是用空间来换时间。而在eden--->Survivor(幸存)的这个过程中,里面存在大量的临时可回收的对象,需要复制的对象较小,恰好合适。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值