可达性分析算法来判断对象是否是不再使用的对象,本质都是判断一个对象是否还被引用。那么对于这种情况下,由于代码的实现不同就会出现很多种内存泄漏问题
主要原因:内核以为此对象还在引用中,无法回收,造成内存泄漏
只有对象不会再被程序用到了,但是GC又不能回收它们的情况,才叫内存泄漏。
内存泄漏和内存溢出的关系:内存泄漏的增多,最终会导致内存溢出。
内存泄漏类别
mysql-python的连接
mysql-python会设定use_unicode=True。结果是mysql-python会利用python自己的 codec模块去做字符解码工作,但实际中发现mysql库gbk编码字符集比python的gbk编码集大。一些在mysql里可以存储的字符,拿 python的codec去解析就会抛错。更严重的问题是,在mysql-python1.2.3之前,use_unicode=True即让 mysql-python解码这块存在内存泄露的bug。解码出来所有数据库字符串经过mysql-python出来都是unicode object,要输出到文件需要再次编码。