- 原理
内存空间的回收 - 实现方式
1.标记清除法(since 1960)
分为两个阶段
- 标记阶段:标记出可以回收的对象。
- 清除阶段:回收被标记的对象所占用的空间
两个缺点 标记和清除的效率都不高,容易产生大量不连续的内存碎片,给后续大对象没有足够的连续的空间从而提前触发新的一次垃圾收集动作.
垃圾算法都是在此基础上进行修改的
2.复制算法(新生代比较好)
只使用一半内存,要回收的时候把"活"着的拷贝过去,存活的少复制的时间少,存活的多复制的时间长.
3.标记压缩算法
新生代有比较好的复制算法,老年代存活率比较高,这样会有多的复制才做不合适,标记压缩算法是将存活的对象压缩到内存的一端,使他们紧凑的排序到一起,然后对边界以外的内存进行回收,结束后,已用和未用都再各自的一边.解决清除算法效率低和容易产生大量内存碎片的问题.
4.引用计数法
它的引用计数器就加 1 ,引用失效时就减 1 。当引用计数器中的值变为 0 ,则该对象
就不能被使用,变成了垃圾。假如A类里面有B类 B类里面有A类,计数器就不能为0,就无法被回收
5.根搜索法(可达性分析)
基本思想就是选定一些对象作为 GC Roots,以Roots为起点开始向下搜索,当一个对象不可达时,即证明了他可以被回收处理
6.分代收集算法 (https://blog.csdn.net/en_joker/article/details/79737533)
引用文中的一个图
GC原理以及实现方式
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 好文章,记录下 文末有自己整理的Xmind总结~ 转载出处https://uestc-dpz.github.io[...
- 1. 应用程序内存结构 应用程序内存空间通常划分为五个部分 1.1 静态/全局存储区 存放全局和静态变量,静态分配...
- 一次CMS GC问题排查过程(理解原理+读懂GC日志) - iamzhongyong - ITeye技术网站 h...
- 上文已经介绍了JVM内存模型中线程私有的部分(虚拟机栈、本地方发栈、程序计数器),那么本篇文章就来探讨下JVM中线...