首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
go进阶
订阅
hawk
更多收藏集
微信扫码分享
微信
新浪微博
QQ
13篇文章 · 0订阅
Go内存原理(五)-GC原理
前几章我们学习了Golang内存管理的基本原理(还不清楚内存管理的童鞋请移步看内存管理系列)。现在我们来看GC的基本原理是什么? 在三色标记中,减少了STW的时间。我们知道在三色标记中,增加了中间状态-灰色状态,这可以允许标记与用户代码并行执行,这里是怎么做到的呢,是因为三色标…
Go内存管理(三) 源码分析
我们理解源码的流程就非常easy啦。 首先来看一下,mcache,mcentral,mheap这三个结构体。我们选则最长使用的字段进行分析。注:这里都是基于go1.14源码分析(对照代码看体验更佳 接下来我们按照Tiny对象,小对象,大对象分类来介绍内存分配的流程。 0、对象的…
Go 内存管理(一)TCMalloc内存管理原理
TCMalloc(Thread Cache Malloc)是线程级别的内存管理模式。 2、减少锁竞争。对于小对象,只有在对应线程分配的空闲块不足的时候,才会使用到锁;对于大对象,TCMalloc尝试使用有效的自旋锁 总结来说就是:最大化内存使用率,最小化分配时间。 基本把这张图…
揭开defer的面纱
在1.12版本使用的是堆分配,1.13版本加入栈分配,现在1.14版本又加入开放源码,可以看到堆分配是最后的兜底方案。现在我们会来介绍每一种方案。 声明defer关键字处使用deferproc() 注册defer处理函数,将对应的_defer结构体值拷贝到堆上。 对于新创建好的…
defer 链如何被遍历
去年开始写文章的第一篇就是关于 defer,名字比较文艺:《Golang 之轻松化解 defer 的温柔陷阱》,还被吐槽了。因为这篇文章,到《Go 夜读》讲了一期。不过当时纯粹是应用层面的,也还没有跳进 Go 源码这个大坑,文章看着比较清新,也没有大段的源码解析。 上次欧神写了…
Go channel 最详细的源码剖析
chan 是 golang 的最重要的一个结构,是区别于其他高级语言的最重要的特色之一,也是 goroutine 通信必须要的要素之一。很多人用它,但是很少人彻底理解过它,甚至 c <- x ,<-c 这样的语法可能都记不清晰,怎么办?本文教你从源码编译器的…
由浅入深聊聊Golang的sync.Map
今天在技术群中有小伙伴讨论并发安全的东西,其实之前就有写过map相关文章:由浅入深聊聊Golang的map。但是没有详细说明sync.Map是怎么一回事。 回想了一下,竟然脑中只剩下“两个map、一个只读一个读写,xxxxx”等,关键词。有印象能扯,但是有点乱,还是写一遍简单记…
由浅入深聊聊Golang的map
前段时间听了大佬们对于map的讲解,结合自己之前的积累,专门来由浅入深的总结一下,希望可以与map之间做一个了断。 文章的深浅顺序是递进的,当你看完这篇文章,你也基本掌握了map的99%的知识点了,可以装逼和吹牛逼了。 map的声明的时候默认值是nil ,此时进行取值,返回的是…
通过汇编看golang函数的多返回值 | 🏆 技术专题第二期征文
golang这门语言,有个比较好的特性,就是支持函数的多返回值。想C,C++,Java等这些语言,是不支持函数多返回的。但是C,C++可以使用传递指针,实现函数多返回。但是,你有没有想过,golang是怎样实现函数多返回值的呢? 我们知道,C,C++是通过寄存器实现函数返回值的…
[译] 解析 Go 中的函数调用
原文地址:Anatomy of a function call in Go 原文作者:Phil Pearl 译文出自:掘金翻译计划 译者:xiaoyusilen 校对者:1992chenlu,Zheaoli 让我们来看一些简单的 Go 的函数,然后看看我们能否明白函数调用是怎么…