golang
文章平均质量分 61
Jude.Ji
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
GO的调度器
GPM模型 G:Goroutine,创建的协程 P:Processor线程栈,用于存放G的 M:处理器,一个处理器一个线程栈,用于执行程序 抢占调度 Go程序启动时,runtime会去启动一个名为sysmon的m(一般称为监控线程)。sysmon每20us~10ms启动一次。 释放限制超过5分钟的span物理内存 如果超过2分钟没有垃圾回收,强制执行。 将长时间未处理的netpoll结果添加到任务队列 向长时间运行的G任务发出抢占调度 收回因syscall长时间阻塞的ip ...原创 2021-09-10 17:54:23 · 269 阅读 · 0 评论 -
golang内存管理及内存逃逸
golang内存管理及内存逃逸内存分配原理mspanmheap的管理内存栈管理分段栈和连续栈分段栈连续栈栈的缩容指令垃圾回收GC算法的种类标记清楚算法三色标记清楚算法步骤:写屏障混合写屏障内存逃逸造成内存逃逸的条件逃逸指令参考 内存分配原理 在多并发程序中,申请内存资源避免资源竞争,需要加锁机制。为了减少加锁,提高性能,go语言在内存分配中提供mcache,mcentral,mheap三个组件。 mcache:管理线程本地缓存的mspan mcentral:管理全局的mspan供所有线程使用,mcache原创 2021-09-10 17:16:02 · 457 阅读 · 0 评论
分享