不写算法题都差点忘记了程序还有超时及内存泄漏的问题。按说像python这种自带垃圾回收机制的语言应该是不存在内存泄漏的,但是一不小心就被我遇到了。因此重新温习了python的内存回收机制,并查阅了大神博客,在有些情况下python也是会出现内存泄漏的!
python内存回收机制
python的内存回收是对变量使用引用计数策略来实现的,并引入标记-清除和分代收集两种策略来解决循环引用问题。通过周期追踪对引用计数为零或长时间未被访问的变量将进行删除,回收其占用的内存空间。
python内存回收机制图解:
阈值:被分配对象的计数值与被释放对象的计数值差异
出现内存泄漏的情况
1、C语言开发的底层模块出现内存泄漏;
2、程序中含有全局的list、dict等容器,且有循环操作导致容器不断扩增,也没有在使用完后进行手动删除回收;
3、代码中存在引用循环,导致python内存回收机制无用。
参考博客:
python回收机制:https://www.cnblogs.com/pinganzi/p/6646742.html
python内存泄漏:https://blog.csdn.net/jianhong1990/article/details/9951185