
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
垃圾回收机制和垃圾回收算法是程序员在学习Java编程开发语言的时候需要重点掌握的一个编程知识点,下面我们就简单来了解一下,Java编程垃圾回收机制基础知识分享。
一、对象存活判断
判断对象是否存活一般有两种方式:
1.引用计数:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,无法解决对象相互循环引用的问题。
2.可达性分析(ReachabilityAnalysis):从GCRoots开始向下搜索,搜索所走过的路径称为引用链。当一个对象到GCRoots没有任何引用链相连时,则证明此对象是不可用的,不可达对象。
二、GC算法
GC基础的算法有三种:标记-清除算法、复制算法、标记-压缩算法,我们常用的垃圾回收器一般都采用分代收集算法。
1.标记-清除算法,“标记-清除”(Mark-Sweep)算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。
2.复制算法,“复制”(Copying)的收集算法,它将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。
3.标记-压缩算法,标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存
4.分代收集算法,“分代收集”(GenerationalCollection)算法,把Java堆分为新生代和老年代,这样就可以根据各个年代的特点采用适当的收集算法。
三、垃圾回收器
1.Serial收集器,串行收集器是古老,稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收。
2.ParNew收集器,ParNew收集器其实就是Serial收集器的多线程版本。
3.Parallel收集器,ParallelScavenge收集器类似ParNew收集器,Parallel收集器更关注系统的吞吐量。
4.ParallelOld收集器,ParallelOld是ParallelScavenge收集器的老年代版本,使用多线程和“标记-整理”算法
5.CMS收集器,CMS(ConcurrentMarkSweep)收集器是一种以获取短回收停顿时间为目标的收集器。
6.G1收集器,G1(Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器.以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。