美文网首页
GC 算法简介

GC 算法简介

作者: 咪雅先森 | 来源:发表于2019-01-28 00:26 被阅读0次

GC 的概念
Garbage Collection 垃圾收集
1960年 List 使用了 GC
Java 中,GC 的对象是堆空间和永久区

1.引用计算法

使用语言:
COM
ActionScript3
Python

存在的问题:
性能问题
循环引用

2.标记-清除

标记垃圾对象,清除

3.标记-压缩

标记垃圾对象,清除。重新移动至可用空间。
适用于存活对象较多的场合,如老年代。
是对 标记清除 的改良

4.复制算法

与标记-清除 算法相比,较高效。不适合存活对象软多的场合。
必须有两块空间,一样大小,其中只有一块内存在使用。工作时,将所有存活对象复制到另一块空间。
复制完成之后,两块空间角色发生交换。
问题在于,对空间是一种费的。不发生GC时,另一块空间是没有使用的。

5.分代算法

依据对象的存活周期进行分类,短命的称为新生代,长命的称为老年代。
根据不同代的特点,选取合适的收集算法
1.少量对象存活时,适合复制算法
2.大量对象存活时,适合标记清理或者标记压缩

GC算法总结

1.引用计数,没有被使用,因为不能解决循环引用的问题。
2.标记-清除,老年代明确使用
3.标记-压缩,老年代明确使用
4.复制算法
新生代明确使用

少量存活对象,适合复制算法
大量象存存活,适合标记清除 或 标记压缩

所有的算法,需要能够识别一个垃圾对象,因些需要给出一个可触及性的定义
如何识别对象是圾垃
1.可触及性
从根节点可以触及到的对象
2.可复活的
一是所有引用被释放,就是可复活的状态,即等死状态
因为在 finalize() 中可能复活该对象
3.不可触及的,真正可被回收的对象
在 finalize() 后,可以进入不可触及状态
不可触及的对象不能可复活
可以回收

相关文章

  • GC 算法简介

    GC 的概念Garbage Collection 垃圾收集1960年 List 使用了 GCJava 中,GC 的...

  • golang 垃圾回收

    垃圾回收(gc)是 golang 很重要的一部分。 GC 算法简介 三种经典的 GC 算法:引用计数(refere...

  • JAVA GC算法简介

    GC是java语言对回收不在继续使用的内存空间进行回收的程序流程的一个简介。 所以说GC 总共需要做以下的几件事情...

  • 白话JVM GC-GC算法简介

    什么是JVM JVM是个程序,象是句屁话,对就是句屁话!但这句屁话揭示了真理!“算法+数据结构=程序”注:凭借一句...

  • chapter-4 GC算法与种类

    GC 算法与种类 ■ GC的概念■ GC算法• 引用计数法• 标记清除• 标记压缩• 复制算法■可触及性■ Sto...

  • Lua GC

    一、GC的原理及其算法设计 不同的语言,对GC算法的设计不同,常见的GC算法是引用计数和Mark-Sweep算法,...

  • GC算法基础

    英文原文:GC Algorithms: Basics译者:有孚译文地址:GC算法基础 在深入GC算法的实现细节之前...

  • java性能优化

    压测工具 基准性能数据 方面 代码算法 JVM gc算法 gc收集器

  • Android内存优化

    GC算法 当内存不足时,系统就会触发GC,GC采用垃圾标记算法为跟搜索算法 从图中可以看书obj4是科大的对象,标...

  • JVM GC算法与GC执行流程

    JVM GC算法 可达分析算法 GC执行流程 https://www.jianshu.com/p/314272e6...

网友评论

      本文标题:GC 算法简介

      本文链接:https://www.haomeiwen.com/subject/xadojqtx.html