目录

文章目录

  • 目录
  • GC
  • 常见的 GC 实现方式
  • 参考文档

GC

GC(Garbage Collection,垃圾回收)是一种自动内存管理的机制。相对于 C、C++ 以及 Rust 等编程语言使用手动的方式管理内存。

当程序向操作系统申请的内存不再需要时,垃圾回收主动将其回收并供其他代码进行内存申请时候复用,或者将其归还给操作系统,这种针对内存级别资源的自动回收过程,即为垃圾回收。而负责垃圾回收的程序组件,即为垃圾回收器。

一方面,程序员受益于 GC,无需操心、也不再需要对内存进行手动的申请和释放操作,GC 在程序运行时自动释放残留的内存。另一方面,GC 对程序员几乎不可见,仅在程序需要进行特殊优化时,通过提供可调控的 API,对 GC 的运行时机、运行开销进行把控的时候才得以现身。

通常,垃圾回收器的执行过程被划分为两个半独立的组件:

  1. 赋值器(Mutator):这一名称本质上是在指代用户态的代码。因为对垃圾回收器而言,用户态的代码仅仅只是在修改对象之间的引用关系,也就是在对象图(对象之间引用关系的一个有向图)上进行操作。

  2. 回收器(Collector):负责执行垃圾回收的代码。

常见的 GC 实现方式

所有的 GC 算法其存在形式可以归结为追踪(Tracing)和引用计数(Reference Counting)这两种形式的混合运用。

  • 追踪式 GC:从根对象出发,根据对象之间的引用信息,一步步推进直到扫描完毕整个堆并确定需要保留的对象,从而回收所有可回收的对象。Go、 Java、V8 对 JavaScript 的实现等均为追踪式 GC。

  • 引用计数式 GC:每个对象自身包含一个被引用的计数器,当计数器归零时自动得到回收。因为此方法缺陷较多,在追求高性能时通常不被应用。Python、Objective-C 等均为引用计数式 GC。

注:根对象在垃圾回收的术语中又叫做根集合,它是垃圾回收器在标记过程时最先检查的对象,包括:

  1. 全局变量:程序在编译期就能确定的那些存在于程序整个生命周期的变量。
  2. 执行栈:每个 goroutine 都包含自己的执行栈,这些执行栈上包含栈上的变量及指向分配的堆内存区块的指针。
  3. 寄存器:寄存器的值可能表示一个指针,参与计算的这些指针可能指向某些赋值器分配的堆内存区块。

参考文档

https://mp.weixin.qq.com/s/o2oMMh0PF5ZSoYD0XOBY2Q
https://mp.weixin.qq.com/s/X1Grnrhj7C44PJVAg-Z3hg

Go 语言编程 — GC 垃圾回收相关推荐

  1. 【七天入门Go语言】 GC垃圾回收三色标记 | 第七天

    目录 GC 三色标记法 最后 GC GC全称Garbage Collection 目前主流的垃圾回收算法有两类,分别是追踪式垃圾回收算法(Tracing garbage collection)和引用计 ...

  2. 编程基础 垃圾回收_编程中的垃圾回收指南

    编程基础 垃圾回收 什么是垃圾回收? (What is Garbage Collection?) In general layman's terms, Garbage collection (GC) ...

  3. Python高级编程——13.垃圾回收机制

    垃圾回收(了解) 1.1 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 257 ...

  4. java如何关闭gc,GC垃圾回收机制,

    GC垃圾回收机制, 个人理解: 因为在使用JAVA创建一个类或者对象后,难免会存在以后不使用的情况,为了减少其继续再占用内存,必须建立一套清理垃圾的机制,但是怎么判断什么样的才算是不使用的垃圾呢,这里 ...

  5. java垃圾回收机制_乐字节Java|GC垃圾回收机制、package和import语句

    本文接上一篇:乐字节Java|this关键字.static关键字.block块.本文是接着讲述JavaGC垃圾回收机制.package 和 import语句. 一.GC垃圾回收机制 GC全名:Garb ...

  6. 不要再问我“Java GC垃圾回收机制”了

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! Java GC垃圾回收几乎是面试必问的JVM问题之一,本篇文章带领大家了解Java GC的底 ...

  7. golang GC垃圾回收机制

    ** golang GC垃圾回收 ** 垃圾回收(Garbage Collection,简称GC)是编程语言中提供的自动的内存管理机制,自动释放不需要的对象,让出存储器资源,无需程序员手动执行. Go ...

  8. java gc 有钱人_小猿圈java之GC垃圾回收机制

    垃圾回收机制是提高性能的重要机制,所以不管学什么语言也好,垃圾回收机制都是有的,也是很重要的,小猿圈这章详解一下java的GC垃圾回收机制,需要用的或者感兴趣的朋友们,可以跟着小编学习一下. 一.GC ...

  9. 精华推荐 | 【JVM深层系列】「GC底层调优系列」一文带你彻底加强夯实底层原理之GC垃圾回收技术的分析指南(GC原理透析)

    前提介绍 很多小伙伴,都跟我反馈,说自己总是对JVM这一块的学习和认识不够扎实也不够成熟,因为JVM的一些特性以及运作机制总是混淆以及不确定,导致面试和工作实战中出现了很多的纰漏和短板,解决广大小伙伴 ...

最新文章

  1. php打印四边形,用php的for循环输出四边形,各种三角形和菱形【含空心版本】
  2. 常用的正则表达式分享
  3. React Native获取手机的各种高度
  4. 使用.Net Core编写命令行工具(CLI)
  5. LeetCode 1723. 完成所有工作的最短时间(DFS+剪枝 / 状态压缩DP)
  6. qwt的安装和移植-
  7. linux DSA 开发上手笔记(一)
  8. 配置Model Optimizer的Python 3.7.4 ECHO 处于关闭状态。‘pip3‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
  9. CentOS7 安装aria2
  10. intel h61 linux驱动下载,intel h61主板驱动
  11. ThoughtWorks HomeWork
  12. 题解 【中学高级本-网络流24题】餐巾计划
  13. 阿里云服务器密码重置
  14. 掌握微信小程序 this 指向,轻松编写高质量代码
  15. html5源码笔记【爱创课堂专业前端培训】
  16. svn中有的代码被标注黄色,绿色和红色,分别表示什么意思呢?
  17. 面试必备SQL调优方案
  18. Delphi的线程类
  19. [UVA 10635] Prince ans Princess
  20. 使用Vmalert监控报警

热门文章

  1. Unity游戏开发技巧集锦2.1.3实现效果
  2. c语言注释部分只能位于,福建省计算机等级考试二级C语言选择题复习资料
  3. vrrp广播风暴_企业园区网MSTP+VRRP组合
  4. iOS SVN 终端命令
  5. 关卡设计快速入门P_4. 放置Actor
  6. 30分钟从工作电脑入侵公司内网!Win11:更新强制要求有TPM2.0,知道为啥了吧?...
  7. C罗还会是史上第一个上链的得分王吗?
  8. 清华团队将Transformer用到3D点云分割上后,效果好极了丨开源
  9. 你的AI模型有哪些安全问题,在这份AI攻防”词典”里都能查到
  10. 对付审稿人“强迫引用”,新方法来了,Nature都说好