GC
优化GC 的方向:
- 尽量不要大量创建对象, 不要频繁创建对象. 这个道理在所有带gc的编程语言都通用;
- 提高对象重用和避免不必要的对象创建;
解决Go语言程序稳定性的问题:
- 内存泄漏(Go语言也提供自我管理内存的方式), 使用memprof来定位;
- 提高程序的运行性能, 使用cpuprof 来定位问题;
Go gc的信息:
- go的gc是固定每两分钟执行一次,每次执行都是暂停整个程序的;
- gc 执行时间跟对象数量是相关的.
- 采用GOGCTRACE 这个环境变量可以开启gc 调试信息的打印, 内容是 gc 执行时间和回收前后的对象数量变化;
Go开发项目的建议:
- 尽早使用 memprof, cpuprof, GCTRACE来观察程序;
- 关注请求处理时间, 特别是新功能开发的时候, 有助于发现设计上的问题;
- 尽量避免频繁创建对象(&abc{}, new(abc{}), make{}), 在频繁调用的地方可以做对象重用;
- 尽量不要用go 管理大量对象, 内存数据库可以完全用C实现好, 然后通过cgo来调用;