跟我一起分析GO源码
文章平均质量分 92
跟我一起分析GO源码
墨子哲
感兴趣方向WEB架构,大数据,人工智能
展开
-
引导启动和初始化
引导启动和初始化 1.引导启动 1.1启动函数入口 1.1.1 准备运行文件 hello.go func main() { fmt.Println("hello world") } 使用-gcflags "-N -l" 参数关闭编译器代码优化和函数内联,避免断点和单步执行无法准确对应源码行数,避免小函数和局部变量被优化掉。 go build -gcflags "-N...原创 2017-06-09 00:37:45 · 810 阅读 · 0 评论 -
内存分配管理
内存分配管理 1.基本概念 Go构建了一套自主内存管理分配,没有使用传统的内存分配器malloc,器,原理类似于tcmalloc。为了方便管理内存,首先会向系统申请一大块内存,将内存切分成小块,通过内存分配的办法进行管理。 1.1 基本策略: 1>. 每次从操作系统申请一大块内存(比如 1MB),以减少系统调用。 2>. 将申请到的大块内存按照特定大小预先切分成小块,构...原创 2017-06-27 10:48:13 · 744 阅读 · 0 评论 -
垃圾回收机制
垃圾回收机制 基本概念 Go语言垃圾回收是一种非分代,非紧缩,写屏障,三色并发标记清理机制。 1.1 分代算法 将堆划分为两个或多个称为 代(generation) 的空间。新创建的对象存放在称为 新生代(young generation) 中(一般来说,新生代的大小会比 老年代 小很多),随着垃圾回收的重复执行,生命周期较长的对象会被 提升(promotion) 到老年代中。 ...原创 2018-04-20 15:17:34 · 534 阅读 · 0 评论 -
并发调度原理
并发调度原理 并发调度MPG(解释1) Processor(简称 P),其作用类似 CPU 核,用来控制可同时并发执行的任务数量。 每个工作线程都必须绑定一个有效 P 才被允许执行任务,否则只能休眠,直到有空闲 P 时 被唤醒。P 还为线程提供执行资源,比如对象分配内存、本地任务队列等。线程独享所绑 定的 P 资源,可在无锁状态下执行高效操作。 进程内的一切都在以 goroutine(...原创 2018-07-16 16:14:08 · 2386 阅读 · 0 评论