在增加一个功能接口时,由于对现有的代码不是很理解,所以直接用拷贝代码的方式做出来了,功能测试时没有问题,但是在重复测试时发现有内存泄漏问题。
从现象上来看,只要调用到一次功能接口,内存就会上涨2M。
由于不太理解这部分拷贝的代码,加上没有仔细阅读,始终没看出来哪里有问题,然后尝试从底层的网络框架入手查看内存申请和释放的原理,也没有发现问题所在。
只能向公司的技术大佬求助,结果他只看了2分钟就看出问题了,在使用发送数据包的接口时用错了。
然后修改为正确的接口后,就没发生内存泄漏问题了。
总结教训:
- 写代码时需要对代码的基本功能有所了解,如果时间不够,也要有一个基本的概括认识。
- 如果出现这种问题时,应该理清思路,要从现有的代码示例中进行总结和学习,看出使用规律,有自己的思路。
- 层次化排查问题,不能一味按照自己的熟悉程度来决定排查顺序,而是根据实际的代码层次去排查。
- 记得及时求助,否则浪费了太多时间可能只得到很少的经验。