javascript新关键字和内存泄漏?

时间:2018-01-29 17:55:02

标签: javascript memory-management memory-leaks new-operator

def namemethod():
    return ''.join(random.choice(string.lowercase) for x in range(5))

class Test(object):
    def __init__(self, name=None):
        self.name = name if name is not None else namemethod()

MyClass的第一个实例是否会被自动收集?或者我是否需要在第二次分配之前明确let x = new MyClass(); ...[more code] let x = new MyClass(); 或类似的东西,以避免内存泄漏?

1 个答案:

答案 0 :(得分:2)

JavScript的内存会自动管理,因此garbage collector会收集被视为“无法访问”的对象。

在您提供的示例中,存储在x中的对象将被垃圾收集,只要它无法从代码的其他部分访问(即,如果您将其放在{{{{}的全局范围内1}}行,不会收集对象,因为它仍然可以访问)。

大多数情况下,您不必担心JavaScript中的显式内存管理,但了解它确实很重要的常见情况非常重要(请参阅4 common leaks)。

作为一个实际的例子,在大多数前端框架/库中,重要的是销毁由应用程序的短期组件创建的...[more code](即,当倒计时时钟被删除时销毁倒计时时钟的间隔来自DOM)因为这些间隔中的闭包可以防止收集对象。