JVM随笔-垃圾回收

2017-07-09  本文已影响44人  eqgao

JVM随笔-垃圾回收

感觉JVM就是记的比较多,明白了概念就记。想明白细节原理,怕是要看源码(c/c++编写的)

垃圾收集

标记清除(老年)

标记清除有个弊端就是导致内存碎片

复制(新生)

eden取得对象复制到survivor区域,在survovor的对象,达到一定年龄,会进入老年代,其他的会从from(s0/s1) 复制到to(s0/s1)

复制算法解决的内存碎片的问题

标记压缩(老年)

首先对内存进行标记,然后进行清除,清除过程中,对存活的对象压缩到内存的一段端

标记压缩能够解决内存碎片问题

分代

按照对象的生命周期长短,把堆空间分为新生代和老年代,新生代的对象达到一定的年龄(默认15,一次回收年龄+1),会进入老年代。对不同年代的内存使用不同放入回收算法。

分区

把堆空间分成连续不同的小区间,每个小区间独立使用,独立回收。G1收集器就是使用分区算法。


垃圾收集器

串行收集器

串行回收.png

串行回收器是一个成熟且经过长时间生产环境考验的极为高速的收集器。在CPU处理器等硬件平台不是特别好的场合,性能表现可以超过并行回收器和并发回收器。

并行收集器

ParNew回收器.png

吞吐量 = 运行用户代码时间 / ( 运行用户代码时间 + 垃圾收集时间 )
期望停顿的时间和吞吐量的大小是一对矛盾的设置,需要找到一个平衡点。

CMS收集器

CMS收集器.png

G1收集器

理解垃圾收集总体的过程很重要。这有助于对G1的总体理解。

G1并发标记周期.png
上一篇 下一篇

猜你喜欢

热点阅读