
一. Go 内存管理相关
文章平均质量分 90
Go 内存管理相关
苹果香蕉西红柿
这个作者很懒,什么都没留下…
展开
-
五. go 内存管理之 问题总结
目录一. 垃圾收集相关其它问题一. 垃圾收集相关讲以go的垃圾收集, 问道这个问题,可以循序渐进的讲先说一下常见的垃圾收集算法,不同算法的优缺点,go中采用的三色标记算法说一下解决三色算法中指针悬挂问题的屏障技术解决stw所以出现了不同的垃圾收集方式,先讲一下stw,然后说一下常见的收集方式go中采用的收集器,以及不同版本中的演进过程其它问题GoRoot和GoPath的作用:GoRoot 是 Go 的安装路径GoPath 的作用在于提供一个可以寻找 .go 源码的路径原创 2023-04-26 10:21:35 · 121 阅读 · 0 评论 -
四. go 内存管理之 编译原理
在编译一个go项目时,编译器首先读取到go文件,进行词法分析,根据变量,类型,运算符,流程语句,函数等关键字,每一个go文件都会被抽象成一棵多叉的抽象语法树, 最终将抽象后的信息封装到go/ast/ast.go文件中的一个File结构体中,所以又叫抽象ast树Doc * CommentGroup //保存了通过DOC生成的注释信息,associated documentation;原创 2023-04-26 10:20:57 · 125 阅读 · 0 评论 -
二. go 内存管理之 垃圾收集
了解垃圾收集前,先了解一下STW垃圾收集器在回收垃圾时,必须在一个能保障一致性的快照中进行的,如果不满足,分析垃圾的结果的准确性就无法保证,所以通过挂起所有用户线程来保证,这个挂起是JVM在后台自动发起的,也就是我们说的Stop the World进而引出什么时候挂起用户线程: 是在一个特定的位置挂起用户线程,这个特定的位置被称为安全点SefePoint,原创 2023-04-26 10:20:51 · 1130 阅读 · 0 评论 -
三. go 内存管理之 栈内存管理
寄存器是中央处理器,可以提供最快的读写速度,但是存储能力有限栈寄存器在是 CPU 寄存器中的一种,主要作用是跟踪函数的调用栈golang的栈中用到了 BP 和 SP 两个栈寄存器,它们分别存储了栈的基址指针和栈顶的地址,BP 和 SP 之间的内存就是当前函数的调用栈当应用程序申请或者释放栈内存时只需要修改 SP 寄存器的值,这种线性的内存分配方式与堆内存相比更加快速,占用极少的额外开销什么是逃逸: 原本应该分配到栈上的分配到了堆上,我们成为"逃逸"原创 2023-04-26 10:19:57 · 1503 阅读 · 0 评论 -
一. go 内存管理之 内存分配相关
先了解一下golang中内存分配一些前置概念相关的东西参考博客Go 语言设计与实现GO专家编程Go 语言问题集(Go Questions)了解Go内存分配前,先了解一下几种内存分配方式,引出Go中根据对象大小的分级分配与,内存管理组件线性分配: 就是维护一个指针指向空闲内存区域,移动指针到空闲区域分配空闲内存即可,优点: 实现复杂度低,执行速度快,缺点: 如果分配的内存被回收了,线性分配器是无法重新使用,容易造成内存碎片。原创 2023-04-25 11:39:44 · 2191 阅读 · 0 评论