销毁构造函数实例
Destroy constructor instances
function ConstructMe(msg) {
this.message = msg;
}
instances = {
instance1: new ConstructMe('msg1'),
instance2: new ConstructMe('msg2'),
instance3: new ConstructMe('msg3'),
instance4: new ConstructMe('msg4'),
instance5: new ConstructMe('msg5')
}
如果我有这个构造函数,并且我在一个对象中构建了它的实例(如上所示),我将如何在以后销毁它们?
我想确保它们不再可访问,但也要确保它们不再无用。
删除对象有用吗?还是这些实例会无名地留在内存中的某个地方?
就我而言,我在一个应用程序中根据某些操作创建了许多实例,我想确保我保持内存干净,不要让东西四处闲逛,杂乱无章...
期待您的反馈
JavaScript 内存管理的核心概念是可达性的概念。
一组不同的对象被假定为可达:这些被称为根。通常,这些包括从调用堆栈中的任何位置引用的所有对象(即当前正在调用的函数中的所有局部变量和参数)以及任何全局变量。
对象保存在内存中,同时可以通过引用或引用链从根访问它们。
浏览器中有一个垃圾收集器,可以清理不可达对象占用的内存
所以在你的情况下,如果你的对象实例将不再可用,垃圾收集器将自动删除这个对象,你不需要自己删除它们或在大多数情况下进行任何内存管理
Javascript 这样不行。它是一种 garbage collected 语言。从技术上讲,您可以执行以下操作:
delete instances.instance3;
这应该从 instances
对象中删除 属性,但实际上您很少需要担心它。 JavaScript 运行时将在您*
之后负责清理
*从技术上讲,您仍然可以在 javascript 中创建内存泄漏,但在绝大多数情况下,您无需担心。
function ConstructMe(msg) {
this.message = msg;
}
instances = {
instance1: new ConstructMe('msg1'),
instance2: new ConstructMe('msg2'),
instance3: new ConstructMe('msg3'),
instance4: new ConstructMe('msg4'),
instance5: new ConstructMe('msg5')
}
如果我有这个构造函数,并且我在一个对象中构建了它的实例(如上所示),我将如何在以后销毁它们? 我想确保它们不再可访问,但也要确保它们不再无用。
删除对象有用吗?还是这些实例会无名地留在内存中的某个地方?
就我而言,我在一个应用程序中根据某些操作创建了许多实例,我想确保我保持内存干净,不要让东西四处闲逛,杂乱无章...
期待您的反馈
JavaScript 内存管理的核心概念是可达性的概念。
一组不同的对象被假定为可达:这些被称为根。通常,这些包括从调用堆栈中的任何位置引用的所有对象(即当前正在调用的函数中的所有局部变量和参数)以及任何全局变量。
对象保存在内存中,同时可以通过引用或引用链从根访问它们。
浏览器中有一个垃圾收集器,可以清理不可达对象占用的内存
所以在你的情况下,如果你的对象实例将不再可用,垃圾收集器将自动删除这个对象,你不需要自己删除它们或在大多数情况下进行任何内存管理
Javascript 这样不行。它是一种 garbage collected 语言。从技术上讲,您可以执行以下操作:
delete instances.instance3;
这应该从 instances
对象中删除 属性,但实际上您很少需要担心它。 JavaScript 运行时将在您*
*从技术上讲,您仍然可以在 javascript 中创建内存泄漏,但在绝大多数情况下,您无需担心。