Java JVM垃圾收集算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41723615/article/details/88698972

垃圾收集算法:

1.标记-清除算法:
如同名字一样,操作分两个阶段标记与清除,标记过程在如何判断对象已死中已经有做介绍了。
缺点:标记和清除过程效率不高,标记清除后会产生大量的空间碎片。
过多的空间碎片会影响以后程序运行分配较大的对象时,无法找到连续内存而不得不提前触发另一次垃圾收集动作。
2.复制算法:
简单的理解就是:把一块内存空间分为两块,一块快用完了,就把另一块复制到新的内存空间上,然后把用过那块内存空间清除掉。
每次操作就对一个半区进行操作。
优点:效率高。
3.商用虚拟机的复制算法:
将内存划分为一个大的Eden区,两个小的存活区(survivor)。每次使用一块Eden和一块survivor时将这两块使用到的内存块,
复制到另一个survivor区,接着清除使用过的那两块空间。
缺点:老年代不适合使用,如果对象存活率高,则要过多复制操作,效率将会变低,
3.标记整理算法:
标记和前面所讲的标记一样,整理就是把要清除的部分往一边移,最后将移动累积的那一大块清除。
4.分代收集算法:
根据对象存活的周期不同而将内存划分为几块。
一般把堆分为新生代和老年代,新生代存活率低所以选择复制算法,老年代存活率高,没有多余空间进行分配担保,所以选择标记-清除或者标记整理算法。

猜你喜欢

转载自blog.csdn.net/qq_41723615/article/details/88698972