jvm回收方式

垃圾回收的瓶颈
传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full GC所带来的应用暂停。在一些对实时性要求很高的应用场景下,GC暂停所带来的请求堆积和请求失败是无法接受的。这类应用可能要求请求的返回时间在几百甚至几十毫秒以内,如果分代垃圾回收方式要达到这个指标,只能把最大堆的设置限制在一个相对较小范围内,但是这样又限制了应用本身的处理能力,同样也是不可接收的。 分代垃圾回收方式确实也考虑了实时性要求而提供了并发回收器,支持最大暂停时间的设置,但是受限于分代垃圾回收的内存划分模型,其效果也不是很理想。 为了达到实时性的要求(其实Java语言最初的设计也是在嵌入式系统上的),一种新垃圾回收方式呼之欲出,它既支持短的暂停时间,又支持大的内存空间分配。可以很好的解决传统分代方式带来的问题。增量收集的演进 增量收集的方式在理论上可以解决传统分代方式带来的问题。增量收集把堆空间划分成一系列内存块,使用时,先使用其中一部分(不会全部用完),垃圾收集时把之前用掉的空间中的存活对象再放到后面没有用的空间中,这样可以实现边使用边收集的效果,避免出现传统分代方式中,整个使用完了再暂停回收的情况。 当然,传统分代收集方式也提供了并发收集,但是他有一个很致命的地方,就是把整个堆做为一个内存块,这样一方面会造成碎片(无法压缩),另一方面他的每次收集都是对整个堆的收集,无法进行选择,在暂停时间的控制上还是很弱。而增量方式,通过内存空间的分块,恰恰可以解决上面问题。Garbage Firest(G1)这部分的内容主要参考这里,这篇文章算是对G1算法论文的解读目标从设计目标看G1完全是为了大型应用而准备的。支持很大的堆高吞吐量 --支持多CPU和垃圾回收线程 --在主线程暂停的情况下,使用并行收集 --在主线程运行的情况下,使用并发收集实时目标:可配置在N毫秒内,最多只占用M毫秒的时间进行垃圾回收当然G1要达到实时性的要求,相对传统的分代回收算法,在性能上会有一些损失。算法详解 G1可谓博采众家之长,力求到达一种完美。他吸取了增量收集优点,把整个堆划分为一个一个等大小的区域(region)。内存的回收和划分都以region为单位;同时,他也吸取了CMS的特点,把这个垃圾回收过程分为几个阶段,分散一个垃圾回收过程;而且,G1也认同分代垃圾回收的思想,认为不同对象的生命周期不同,可以采取不同收集方式,因此,它也支持分代的垃圾回收。为了达到对回收时间的可预计性,G1在扫描了region以后,对其中的活跃对象的大小进行排序,首先会收集那些活跃对象小的region,以便快速回收空间(要复制的活跃对象少了),因为活跃对象小,里面可以认为多数都是垃圾,所以这种方式被称为Garbage First(G1)的垃圾回收算法,即:垃圾优先的回收。回收步骤:初始标记(Initial Marking) G1对于每个region都保存了两个标识用的bitmap,一个为previous marking bitmap,一个为next marking bitmap,bitmap中包含了一个bit的地址信息来指向对象的起始点。 开始Initial Marking之前,首先并发的清空next marking bitmap,然后停止所有应用线程,并扫描标识出每个region中root可直接访问到的对象,将region中top的值放入next top at mark start(TAMS)中,之后恢复所有应用线程。 触发这个步骤执行的条件为: G1定义了一个JVM Heap大小的百分比的阀值,称为h,另外还有一个H,H的值为(1-h)Heap Size,目前这个h的值是固定的,后续G1也许会将其改为动态的,根据jvm的运行情况来动态的调整,在分代方式下,G1还定义了一个u以及soft limit,soft limit的值为H-uHeap Size,当Heap中使用的内存超过了soft limit值时,就会在一次clean up执行完毕后在应用允许的GC暂停时间范围内尽快的执行此步骤; 在pure方式下,G1将marking与clean up组成一个环,以便clean up能充分的使用marking的信息,当clean up开始回收时,首先回收能够带来最多内存空间的regions,当经过多次的clean up,回收到没多少空间的regions时,G1重新初始化一个新的marking与clean up构成的环。 并发标记(Concurrent Marking) 按照之前Initial Marking扫描到的对象进行遍历,以识别这些对象的下层对象的活跃状态,对

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

于在此期间应用线程并发修改

发布了75 篇原创文章 · 获赞 2 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/xmh_sxh_1314/article/details/104329511