在LoadRunner性能测试的过程中,当触发CG回收机制时,回收垃圾的方法有哪些呢?其重要性不言而喻。本篇文章我们将与您分享LoadRunner之垃圾收集算法的相关内容。
(1) 标记-清除算法(Mark-Sweep):标记-清除算法主要分为两个阶段:标记阶段和清除阶段。标记阶段是将所有需要回收的对象进行标记,清除阶段是对被标记的对象所占用的空间进行回收。
(2) 复制算法(Copying):Copying复制算法的功能是为了解决Mark-Sweep标记-清除算法中关于内存碎片的问题,先将可用内存划分为大小相等的两块,每次仅使用其中的一块,当这块内存使用完成后,就会将仍然存活的对象复制到另外一块上面,然后把已使用的一块内存完全清理掉,这样就可以避免Mark-Sweep标记-清除算法内存碎片的问题的发生。
(3) 标记-整理算法(Mark-compact): 为了解决以上提到的复制算法的问题,提出了标记-整理算法Mark-Compact算法。该算法与Mark-Sweep有些地方很相似,第一步都需要先标记对象,不过在标记完成后,并不会立刻直接清理可回收的对象,而是将存活的对象都移动向一端,同时将端边界之外的内存清理掉。由于标记-整理算法是在标记-清除算法的基础上,又进行了对象的移动,因此成本更高,但是解决了内存碎片的问题。
(4) 分代收集算法(GenerationalCollection): 在所有的JVM垃圾收集器采用的算法中,分代收集算法应该是目前用的最多的一种,为什么广泛使用分代收集算法呢?是因为JVM把内存划分为年轻代、年老代以及持久代,如果没有持久代则不予考虑,其中年轻代和年老代是存放在堆中的,因为每个代需要收集的对象有比较大的差异,使用的频率也有很大的差别,所以会对不同代采取不同的回收算法。这种就是我们通常说的分代收集算法。
以上就是今天为您带来的LoadRunner之垃圾收集算法的全部内容,希望对您有所帮助!如您有任何疑问请及时与我们联系,道普云将竭诚为您服务!