看到内存泄露的文章,谁有python内存泄露的实例分享吗?,泄露python,在一篇js的文章中看到,


在一篇js的文章中看到, 闭包会导致内存泄露( 所以不用滥用 )

联想到python中, 使用 @装饰器 是非常常见的,
那么, 有内存泄露的实例吗 ?

以下是我的了解


我们常说的js的闭包导致内存问题,这个真不是js本身的锅,这是IE垃圾回收机制(GC)的bug(好像某个版本前的Firefox也是)。

用 js 的应该都知道,js 语言本身是不包含 DOM 对象的,DOM 对象是由浏览器生成和管理的,而IE浏览器的 DOM 对象 GC 机制用的是单纯的引用计数。
所以,当出现 DOM 的循环引用的时候,IE 的 GC 完全没法回收,内存就泄露了。
闭包只是比较容易产生循环应用,纯js对象的循环引用,是不会内存泄露的。只有在某些浏览器上,当js对象和DOM对象循环引用了,才可能内存泄露。

然后说下python

python 虽然是引用计数为主的GC模式,但是加上了检测 reachable (标记-清除和分代收集)的机制为辅,所以大部分循环引用是没有问题的。也不用担心装饰器造成类似 js 的内存泄露问题。

但是 python 循环引用还有可能触发不可回收的问题的(比如自定义__del__的对象循环引用),不过比较少见,如果想了解请自行搜索。

编橙之家文章,

评论关闭