Go性能优化概览-曹春晖
coding.net/p/gonggongbanji/files/all/DF46 CPU 使⽤太⾼了-GC 使⽤ CPU 过⾼ https://github.com/glycerine/offheap • 可以将变化较少的结构放在堆外 • 通过 cgo 来管理内存 • 让 GC 发现不了这些对象 • 也就不会扫描了 Off heap 也可以减少 Go 进程的内存占⽤和内存使 ⽤波动,但要⽤到 CPU 过⾼ • 减少堆上对象分配 • sync.Pool 进⾏堆对象重⽤ • Map -> slice • 指针 -> ⾮指针对象 • 多个⼩对象 -> 合并为⼀个⼤对象 • offheap • 降低 GC 频率 • 修改 GOGC • Make 全局⼤ slice • CPU 使⽤太⾼ • 调度相关的函数使⽤ CPU 过⾼ • 注意 automaxprocs • 尝试使⽤ 对象复⽤ • 为不同⼤⼩的对象提供不同⼤⼩ level 的 sync.Pool • 松散的对象调整为紧凑的对象,如:map -> slice,查找时间复杂度增加,但内存使⽤ 降低 • offheap • 邪道:动态调整 GOGC • Goroutine 栈占⽤过多内存 • 减少 goroutine 数量 • 如每个连接⼀读⼀写 -> 合并为⼀个连接⼀个 goroutine • Goroutine0 码力 | 40 页 | 8.69 MB | 1 年前3
共 1 条
- 1