CPU问题:

使用pprof定位cpu瓶颈:

  • 代码逻辑问题,优化算法
  • gc问题,使用pprof定位频繁对象分配的代码,使用sync.Pool优化

内存问题:

使用pprof定位大量内存分配的代码

  • 是否内存泄露
  • 是否slice一直扩容
  1. 影响gc的因素是分配的对象数量,而不是内存分配的大小,因此[]Bean更优于[]*Bean
  2. 对于频繁分配的对象,应该使用对象池进行复用
  3. 对于slicemap,尽量进行预分配,防止重复扩容
  4. 注意goroutine的泄露问题
  5. 避免创建大量goroutineg结束后并不会被释放,而是加入空闲队列中等待复用
  6. 注意全局的指针引用

[TODO]

参考文档