GC垃圾回收机制

2022-09-18  本文已影响0人  斐硕人

GC 是什么?

GC 即 垃圾回收(Garbage collection )
垃圾是指:在运行的程序中没有被任何指针指向的对象,这个对象就是要被回收的垃圾。

如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用,甚至可能导致内存溢出。

Stop-The-World 机制简称 STW,在执行垃圾收集算法时,除了垃圾收集器之外其他所有线程都会被挂起。

哪些语言提供 GC ?

从原理上而言,所有的语言都能够自行实现 GC。

有的语言设计时就提供了 GC,有的语言不提供 GC,但可以手动管理内存。

  • 提供GC的语言:
    Python
    JavaScript
    Java
    Objective-C
    Swift
  • 不提供 GC (手动管理内存,但可以自行实现 GC )的语言:
    C
    C++
  • 也有一些语言可以在编译期,依靠编译器插入清理代码的方式,实现精准的清理,例如:Rust

手动管理内存(没有GC)的优缺点

3种垃圾回收算法的简单对比

比较\回收算法 标记-清除 标记-整理 Scavenge(复制算法)
速度 中等 最慢 最快
空间开销 少(有碎片) 少(无碎片) 双倍空间(无碎片)
是否移动对象

相关文章
注:因为锁文无法链接(https://www.zhihu.com/question/文章号)

  1. 各种编程语言的实现都采用了哪些垃圾回收算法?这些算法都有哪些优点和缺点?
  2. Go 对比 Java、V8 中 JavaScript 的 GC 性能如何?
  3. 一个采用GC的原生程序语言有没有可能性能上超越非GC的原生程序语言?
  4. 编译型语言和解释型语言详解
上一篇 下一篇

猜你喜欢

热点阅读