Go 语言编程 — GC 垃圾回收
目录
文章目录
- 目录
- GC
- 常见的 GC 实现方式
- 参考文档
GC
GC(Garbage Collection,垃圾回收)是一种自动内存管理的机制。相对于 C、C++ 以及 Rust 等编程语言使用手动的方式管理内存。
当程序向操作系统申请的内存不再需要时,垃圾回收主动将其回收并供其他代码进行内存申请时候复用,或者将其归还给操作系统,这种针对内存级别资源的自动回收过程,即为垃圾回收。而负责垃圾回收的程序组件,即为垃圾回收器。
一方面,程序员受益于 GC,无需操心、也不再需要对内存进行手动的申请和释放操作,GC 在程序运行时自动释放残留的内存。另一方面,GC 对程序员几乎不可见,仅在程序需要进行特殊优化时,通过提供可调控的 API,对 GC 的运行时机、运行开销进行把控的时候才得以现身。
通常,垃圾回收器的执行过程被划分为两个半独立的组件:
赋值器(Mutator):这一名称本质上是在指代用户态的代码。因为对垃圾回收器而言,用户态的代码仅仅只是在修改对象之间的引用关系,也就是在对象图(对象之间引用关系的一个有向图)上进行操作。
回收器(Collector):负责执行垃圾回收的代码。
常见的 GC 实现方式
所有的 GC 算法其存在形式可以归结为追踪(Tracing)和引用计数(Reference Counting)这两种形式的混合运用。
追踪式 GC:从根对象出发,根据对象之间的引用信息,一步步推进直到扫描完毕整个堆并确定需要保留的对象,从而回收所有可回收的对象。Go、 Java、V8 对 JavaScript 的实现等均为追踪式 GC。
引用计数式 GC:每个对象自身包含一个被引用的计数器,当计数器归零时自动得到回收。因为此方法缺陷较多,在追求高性能时通常不被应用。Python、Objective-C 等均为引用计数式 GC。
注:根对象在垃圾回收的术语中又叫做根集合,它是垃圾回收器在标记过程时最先检查的对象,包括:
- 全局变量:程序在编译期就能确定的那些存在于程序整个生命周期的变量。
- 执行栈:每个 goroutine 都包含自己的执行栈,这些执行栈上包含栈上的变量及指向分配的堆内存区块的指针。
- 寄存器:寄存器的值可能表示一个指针,参与计算的这些指针可能指向某些赋值器分配的堆内存区块。
参考文档
https://mp.weixin.qq.com/s/o2oMMh0PF5ZSoYD0XOBY2Q
https://mp.weixin.qq.com/s/X1Grnrhj7C44PJVAg-Z3hg
Go 语言编程 — GC 垃圾回收相关推荐
- 【七天入门Go语言】 GC垃圾回收三色标记 | 第七天
目录 GC 三色标记法 最后 GC GC全称Garbage Collection 目前主流的垃圾回收算法有两类,分别是追踪式垃圾回收算法(Tracing garbage collection)和引用计 ...
- 编程基础 垃圾回收_编程中的垃圾回收指南
编程基础 垃圾回收 什么是垃圾回收? (What is Garbage Collection?) In general layman's terms, Garbage collection (GC) ...
- Python高级编程——13.垃圾回收机制
垃圾回收(了解) 1.1 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 257 ...
- java如何关闭gc,GC垃圾回收机制,
GC垃圾回收机制, 个人理解: 因为在使用JAVA创建一个类或者对象后,难免会存在以后不使用的情况,为了减少其继续再占用内存,必须建立一套清理垃圾的机制,但是怎么判断什么样的才算是不使用的垃圾呢,这里 ...
- java垃圾回收机制_乐字节Java|GC垃圾回收机制、package和import语句
本文接上一篇:乐字节Java|this关键字.static关键字.block块.本文是接着讲述JavaGC垃圾回收机制.package 和 import语句. 一.GC垃圾回收机制 GC全名:Garb ...
- 不要再问我“Java GC垃圾回收机制”了
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! Java GC垃圾回收几乎是面试必问的JVM问题之一,本篇文章带领大家了解Java GC的底 ...
- golang GC垃圾回收机制
** golang GC垃圾回收 ** 垃圾回收(Garbage Collection,简称GC)是编程语言中提供的自动的内存管理机制,自动释放不需要的对象,让出存储器资源,无需程序员手动执行. Go ...
- java gc 有钱人_小猿圈java之GC垃圾回收机制
垃圾回收机制是提高性能的重要机制,所以不管学什么语言也好,垃圾回收机制都是有的,也是很重要的,小猿圈这章详解一下java的GC垃圾回收机制,需要用的或者感兴趣的朋友们,可以跟着小编学习一下. 一.GC ...
- 精华推荐 | 【JVM深层系列】「GC底层调优系列」一文带你彻底加强夯实底层原理之GC垃圾回收技术的分析指南(GC原理透析)
前提介绍 很多小伙伴,都跟我反馈,说自己总是对JVM这一块的学习和认识不够扎实也不够成熟,因为JVM的一些特性以及运作机制总是混淆以及不确定,导致面试和工作实战中出现了很多的纰漏和短板,解决广大小伙伴 ...
最新文章
- php打印四边形,用php的for循环输出四边形,各种三角形和菱形【含空心版本】
- 常用的正则表达式分享
- React Native获取手机的各种高度
- 使用.Net Core编写命令行工具(CLI)
- LeetCode 1723. 完成所有工作的最短时间(DFS+剪枝 / 状态压缩DP)
- qwt的安装和移植-
- linux DSA 开发上手笔记(一)
- 配置Model Optimizer的Python 3.7.4 ECHO 处于关闭状态。‘pip3‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
- CentOS7 安装aria2
- intel h61 linux驱动下载,intel h61主板驱动
- ThoughtWorks HomeWork
- 题解 【中学高级本-网络流24题】餐巾计划
- 阿里云服务器密码重置
- 掌握微信小程序 this 指向,轻松编写高质量代码
- html5源码笔记【爱创课堂专业前端培训】
- svn中有的代码被标注黄色,绿色和红色,分别表示什么意思呢?
- 面试必备SQL调优方案
- Delphi的线程类
- [UVA 10635] Prince ans Princess
- 使用Vmalert监控报警
热门文章
- Unity游戏开发技巧集锦2.1.3实现效果
- c语言注释部分只能位于,福建省计算机等级考试二级C语言选择题复习资料
- vrrp广播风暴_企业园区网MSTP+VRRP组合
- iOS SVN 终端命令
- 关卡设计快速入门P_4. 放置Actor
- 30分钟从工作电脑入侵公司内网!Win11:更新强制要求有TPM2.0,知道为啥了吧?...
- C罗还会是史上第一个上链的得分王吗?
- 清华团队将Transformer用到3D点云分割上后,效果好极了丨开源
- 你的AI模型有哪些安全问题,在这份AI攻防”词典”里都能查到
- 对付审稿人“强迫引用”,新方法来了,Nature都说好