垃圾回收机制---分代收集算法-Java

Generational Collection(分代收集)

        分代收集算法中;将堆区内存划分为了三部分:新生代、老年代、永久代;

新生代:

  1.         主要用来存放新生的对象,一般占据堆区内存空间的三分之一;新生代中,保存着大量创建不久的对象,但是大部分对象都是存活不久。
  2. 在新生代中内存又划分为 8 : 1 : 1 ;  8--Eden区(新生对象) , 1--Survivor0 区  和  1--Survivor1区。
  • 大部分对象都是在 Eden区 中生成,在垃圾回收时,先将 Eden 区的存活对象复制一份到 Survivor0 区,然后清空 Eden 区;如是 Survivor0 区内存不再足以存放 Eden 区存活的对象时,就会将 Eden 区 和 Survivor0 区 内存活的对象复制一份到 Survivor1 区,然后就清除 Eden 区和 Survivor0 区的内存,然后 Survivor0 区清空出来之后就会与 Survivor1 区互换,以确保 Survivor1 区 为空。依次反复循环步骤;
  • 最后,当 Survivor1 区也是不足以存放  Eden 区 和 Survivor0 区 内存活的对象时,就会将存活的对象直接存放至老年代
  • 当老年代也是存放满时,就会直接触发一次  标记——清除算法(Full GC),会将存放的老年代和新生代进行回收。。

老年代: 

  1. 存放大对象,比如:new  int [ 1024*1028 ]
  2. 存放生命周期较长的对象(一般经历 15  次  MinorGC  还在存活的对象)MinorGC :新生代中发生的垃圾回收
  3. MinorGC 发生的频率较高,不一定 Eden 区满了才触发。

永久代:

  1. 永久代:永久保存区域。主要用来存放 Class 和 Meta(元数据)的信息。
  2. 比如:常量,字符串常量池,类的信息(类的结构)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值