Jvm调优总结--4:分代垃圾回收

为什么要分代

不同生命周期的对象采用不同的收集方式,提高回收效率

如何分代
在这里插入图片描述
持久代主要存放java类的类信息,与垃圾收集要收集的java对象关系不大。

  1. 年轻代:所有新生成的对象首先都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。当eden区满时,还存活的对象被复制到survivor区,当该区满时分配到另一个区,三个区都满的时候复制到年老区。
  2. 年老代:在年轻代经历了N次垃圾回收后任然存活的对象,就会被放到年老代中。年老代存放的都是一些生命周期较长的对象
  3. 持久代:用于存放静态文件。对垃圾回收没有显著影响,但有些应用可能动态生成或者调用一些class,这种时候需要设置一个比较大的持久代空间来存放这些运行过程中新增的类。

什么情况下触发垃圾回收

  1. Scavenge GC–当新对象生成,并且在Eden申请空间失败时,救护触发Scavenge GC,清除非存活对象,并把存活的对象移动到Survivor区。不会影响到年老区,需要使用速度快、效率高的算法,使Eden尽快空闲出来。
  2. Full GC–对整个进行回收,所以要慢。对Jvm调优的过程中,很大一部分工作就是对Full GC的调节。可能导致Full GC:
    ①年老代被写满
    ②持久代被写满
    ③System.gc()被显示调用
    ④上一次GC之后Heap的各域分配策略动态变化

串行处理器:

–适用情况:数据量比较小(100M左右);单处理器下并且对响应时间无要求的应用。
–缺点:只能用于小型应用

并行处理器:

–适用情况:“对吞吐量有高要求”,多CPU、对应用响应时间无要求的中、大型应用。举例:后台处理、科学计算。
–缺点:垃圾收集过程中应用响应时间可能加长

并发处理器:

–适用情况:“对响应时间有高要求”,多CPU、对应用响应时间有较高要求的中、大型应用。举例:Web服务器/应用服务器、电信交换、集成开发环境。

Jvm调优总结–1:概念
Jvm调优总结–2:基本垃圾回收算法
Jvm调优总结–3:垃圾回收面临的问题
Jvm调优总结–4:分代垃圾回收
Jvm调优总结–5:典型配置

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值