5) 发布修改后的代码,进行观察,通过观察发现系统内存可以正常回收与释放
经过本次golang的调试发生,真正的原因是gc内存释放不够及时,存在滞后性(通过其他服务器观察发现,当压力小的时候,内存是可以正常释放的)。
所以最佳实践还是,在涉及到golang中使用大对象或者频繁创建内存的时候,要采用将对象设置能obj = nil 的方式,告知gc 我已经确实不再使用该内存块了,以便gc快速的回收,减少迭代gc。
另外,这种方式是可以应用到如java,c# 等语言身上的,它们都存在类似的问题。
5) 发布修改后的代码,进行观察,通过观察发现系统内存可以正常回收与释放
经过本次golang的调试发生,真正的原因是gc内存释放不够及时,存在滞后性(通过其他服务器观察发现,当压力小的时候,内存是可以正常释放的)。
所以最佳实践还是,在涉及到golang中使用大对象或者频繁创建内存的时候,要采用将对象设置能obj = nil 的方式,告知gc 我已经确实不再使用该内存块了,以便gc快速的回收,减少迭代gc。
另外,这种方式是可以应用到如java,c# 等语言身上的,它们都存在类似的问题。
内容版权声明:除非注明,否则皆为本站原创文章。