Golang gc演进

GC

  1. 优化GC 的方向:

    • 尽量不要大量创建对象, 不要频繁创建对象. 这个道理在所有带gc的编程语言都通用;
    • 提高对象重用和避免不必要的对象创建;
  2. 解决Go语言程序稳定性的问题:

    • 内存泄漏(Go语言也提供自我管理内存的方式), 使用memprof来定位;
    • 提高程序的运行性能, 使用cpuprof 来定位问题;
  3. Go gc的信息:

    • go的gc是固定每两分钟执行一次,每次执行都是暂停整个程序的;
    • gc 执行时间跟对象数量是相关的.
    • 采用GOGCTRACE 这个环境变量可以开启gc 调试信息的打印, 内容是 gc 执行时间和回收前后的对象数量变化;
  4. Go开发项目的建议:

    • 尽早使用 memprof, cpuprof, GCTRACE来观察程序;
    • 关注请求处理时间, 特别是新功能开发的时候, 有助于发现设计上的问题;
    • 尽量避免频繁创建对象(&abc{}, new(abc{}), make{}), 在频繁调用的地方可以做对象重用;
    • 尽量不要用go 管理大量对象, 内存数据库可以完全用C实现好, 然后通过cgo来调用;

相关博客

  1. http://studygolang.com/articles/1282
  2. http://blog.csdn.net/erlib/article/details/51850912

你可能感兴趣的:(Go,语言)