我的pip install six==1.8.0
中有一个包含许多方法的类,我希望在完成后销毁它的实例。
This answer讲述了如何销毁类的实例,但我不确定实例中可能包含哪些变量和/或其他类型的引用,以及它阻止垃圾收集器删除的方法。
我知道我需要删除传递给prototype
的函数之类的闭包。什么是可能的项目列表我需要做什么才能完全销毁实例?
答案 0 :(得分:2)
这些是我知道你应该做的事情:
setInterval
和setTimeout
的所有功能必须具有声明,因此您可以通过等同于null
来删除它们。clearInterval
和clearTimeout
。希望它涵盖您所需要的一切。
答案 1 :(得分:1)
设置间隔将继续运行,因为由于对作为类的构造函数的A函数的闭包而无法释放实例(A)。 因此,您需要创建一个dispose模式,以释放垃圾收集器无法释放的所有资源。 之后,当垃圾收集器不再使用时,实例将被释放。
function A() {
this.timerId = setInterval(function(){
console.log("A");
}, 2000)
}
A.prototype.dispose = function() {
clearInterval(this.timerId);
};
var instance = new A();
/* Will not work
instance = null;
*/
instance.dispose();
instance = null;