JVM垃圾回收算法和垃圾收集器和jvm调优

1.标记清除

标记要回收的对象,再逐个清除。缺点就是内存碎片多,大对象需要分配连续空间时,有可能再次触发垃圾回收

2.标记整理

标记需要回收的对象,然后将不需要回收的对象移动到一端,然后直接清除掉边界以外的内存(会整理内存区域),效率低

3.复制算法

内存区域一分为2,每次使用一块,垃圾回收的时候会把存活的对象复制到另外一块,然后进行清理。缺点是内存利用率低,不适合在对象存活率高的老年代使用

4.分代回收算法。

新生代使用复制算法

老年代使用标记清除或者标记整理

1.对象首先分配到Eden区(每次只用Eden和其中一块Survivor.),新生代内存不足的时候,触发minor gc,将存活的对象复制到To区域

存活的对象年龄加1 (minor gc会引发stop the world(即在发生垃圾回收的时候,必须暂停其他的用户线程,当垃圾回收线程的任务做完了,其它线程才能运行,因为牵扯到内存的复制).暂停其它用户线程,等垃圾回收结束,用户线程才恢复运行。)

2.当对象的年龄超过阈值的时候(大对象会直接进入到老年代),会晋升到老年代(最大寿命是15)

3.老年代空间不足的时候,回先尝试minorGc,如果之后空间仍然不足,就会触发fullgc

4.老年代内存还是不足,就会触发堆内存溢出

(    Major GC 是清理永久代。Full GC 是清理整个堆空间—包括年轻代和永久代。)

5.新生代一般选择复制算法,老年代是标记清除或者标记整理

垃圾收集器:

1.Serial收集器

单线程,收集垃圾必须停掉所有的工作线程

2.ParNew收集器 是serial的并发版本

3.Cms(并发收集、低头停顿)

4.G1

Jvm调优

  • 增加堆大小,或适当调整老年代和年轻代比例。这样可以直接增加老年代空间,内存回收拥有更大的余地。
  • 适当增加并发周期线程数量,充分发挥多核CPU性能。目的是减少并发周期执行时间,从而加快回收速度。
  • 让并发周期尽早开始,更改IHOP阈值(默认45%)。
  • 在混合收集周期回收更多老年代Region。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值