首页 > 其他分享 >go——GC垃圾回收机制

go——GC垃圾回收机制

时间:2024-09-03 13:49:14浏览次数:10  
标签:存储 访问速度 Go GC 垃圾 go 数据结构 内存

  1. 堆和栈的区别
    1. 存储方式
      • 栈是线性数据结构、采用先进后出的方式存储数据。栈通常用于存储局部变量、函数的参数,栈上的存储空间是有限且固定的,由编译器和操作系统控制。
      • 堆是树型数据结构,用于动态分配和管理内存,堆内存的大小根据需要动态调整,通常比栈大,用于存储复杂的数据结构
    2. 生命周期
      • 栈中数据的生命周期与其作用域有关,当变量离开作用域时会自动回收内存。
      • 堆中数据的生命周期通常由程序员手动控制,通过GC进行自动回收
    3. 访问速度
      • 栈中数据访问速度相对较快,因为栈是线性数据结构,数据的存储直接通过指针获取,无需查找。
      • 堆中数据访问速度相对慢,因为数据的存储位置是分散的需要通过指针间接访问,且堆的管理需要一定的开销
    4. 分配方式
      • 栈上的内存分配是静态的,编译器在分配前就知道大小
      • 堆上的内存分配是动态的,需要在运行时根据需求进行分配
  2. STW
  3. GC 更新过程
    1. 标记清除(Go版本 V1.3 之前)
    2. 三色标记法(Go版本 V1.5)
    3. 三色标记法+混合写屏障机制(Go版本 V1.8)

标签:存储,访问速度,Go,GC,垃圾,go,数据结构,内存
From: https://www.cnblogs.com/fuchenjie/p/18394387

相关文章

  • Go语言中的交互式CLI开发:survey库简介
    在构建命令行工具时,良好的用户交互体验至关重要。尤其是在需要与用户进行复杂输入的场景下,传统的命令行参数和标志可能显得笨拙。github.com/AlecAivazis/survey/v2是一个为Go语言设计的库,专门用于构建交互式的命令行界面。它提供了多种用户输入方式,让你的CLI工具变得更加易......
  • 计算机毕业设计django+vue高校二手书买卖系统的设计与实现【开题+论文+程序】
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育的普及和高校学生数量的增加,二手书市场在高校内逐渐兴起。然而,传统的二手书交易方式往往存在信息不对称、交易效率低下等问题......
  • 使用 niljson 处理 Go 语言中 JSON 的空值类型
    使用niljson处理Go语言中JSON的空值类型原创 源自开发者 源自开发者  2024年09月03日11:43 广东 听全文源自开发者专注于提供关于Go语言的实用教程、案例分析、最新趋势,以及云原生技术的深度解析和实践经验分享。321篇原创内容公众号在使用G......
  • [1054] Select only the records from one GeoSeries that intersect with the polygo
    ToselectonlytherecordsfromoneGeoSeriesthatintersectwiththepolygonsfromanotherGeoSeriesinGeoPandas,youcanusetheintersectsmethodalongwithbooleanindexing.Here’sastep-by-stepguide:ImportGeoPandas:importgeopandasasgpdL......
  • Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • JVM/垃圾回收
    Java的垃圾回收模型一、介绍分为栈、堆、本地方法栈、程序计数器、方法区栈区:主要用来存储局部变量和对象地址栈区不仅存储局部变量和对象地址,还存储方法调用的上下文信息。堆区:分为很多个区域,可以存储对象的具体数据等Java虚拟机中内存最大的一块,是被所有线程共......
  • Go 必知必会:探索 Go 语言中的数组和切片深入理解顺序集合
    文末有面经共享群在Go语言的丰富数据类型中,数组和切片是处理有序数据集合的强大工具,它们允许开发者以连续的内存块来存储和管理相同类型的多个元素。无论是在处理大量数据时的性能优化,还是在实现算法时对数据结构的需求,数组和切片都扮演着至关重要的角色。Go语言中的数组在......
  • x-cmd pkg | gdu - 用 Go 编写的磁盘使用分析器
    目录简介首次用户功能特点常见用法类似或相关的工具进一步阅读简介gdu是由DanielMilde基于Go编写的开源工具,是一个磁盘使用分析器。Gdu主要用于SSD磁盘,它可以充分利用并发处理。不过,HDD也适用,但性能增益不大。首次用户本文的demo展现了如何通过x-cmd......
  • Golang 脱敏扩展包:简化敏感信息处理的利器
    Golang脱敏扩展包:简化敏感信息处理的利器原创 PFinal南丞 PFinalClub  2024年09月03日07:36 上海 听全文PFinalClub一个有信念者所开发出的力量,大于99个只有兴趣者。88篇原创内容公众号Golang脱敏扩展包:简化敏感信息处理的利器背景在数据处理......
  • 基于django+Python的学生选课系统的设计与实现
    前言......