相关资料
- https://golang.org/doc/
- https://golang.org/ref/spec 编程说明书
- https://golang.org/doc/effective_go.html,建议通读一遍
- http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/index.html 进阶阅读
- https://golang.org/ref/mem 内测模型
- https://itjumpstart.files.wordpress.com/2015/03/database-driven-apps-with-go.pdf 数据库使用说明
- https://github.com/golang/go/wiki/CodeReviewComments 代码审核
-
https://blog.csdn.net/liigo/article/details/23699459 代码审核
-
https://making.pusher.com/golangs-real-time-gc-in-theory-and-practice/ 垃圾回收原理示意图
- https://mycodesmells.com/post/accept-interfaces-return-struct-in-go 接口返回值
逃逸分析
- go build -gcflags “-m -m” main.go
- 为接口赋值会逃逸
- 以变量作为长度参数创建数组会逃逸,如 make([]byte,mysize)
go get -d -v -u ./…
go get 不单单会 clone 代码到Gopath目录下,还会build可执行文件到gopath/bin目录下 -d 标志只下载代码包,不执行安装命令; -v 打印详细日志和调试日志。这里加上这个标志会把每个下载的包都打印出来;
./…这个表示路径,代表当前目录下所有的文件
go tool pprof
- go tool pprof -alloc_space -cum -svg http://10.115.27.95:9453/debug/pprof/heap 分析 heap 信息,参数还有 –alloc_objects –use_space –use_object
-
go tool pprof http://10.110.135.163:9459/debug/pprof/profile 分析 CPU 信息
- GODEBUG=gctrace=1 ./main |& gcvis 调试信息 https://github.com/davecheney/gcvis https://github.com/rcrowley/go-metrics
三色标记
三色标记只能保证,一个对象在GC开始阶段是不可达的,一定会被回收。 如果在GC过程中,变为不可达,不一定会被回收