知乎确实做得挺6,前几天我正好在研究这个问题。
1:尽量避免创建大对象以及频繁创建对象,虽然不知道你的具体业务,但我个人认为你这个数据结 构设计得不太合理
2:gc扫描出的内容中含指针的话会进行递归搜索,更会降低gc效率,所以数据结构设计好很关键
3:可以将一个新的地址赋予原来的map,这样原本的内存空间引用丢失,从而能使得gc更快的标记该内存空间,比如使用userAttrList = nil
4:如果需要那么及时性的回收内存,可以考虑使用cgo,就自己动手释放,这块内存也不会经gc处理(但使用不当可能会出现内存申请死锁的问题)