MST

星途 面试题库

面试题:JavaScript中闭包性能优化之内存释放问题

在JavaScript中,已知一个函数内部创建了闭包,且闭包持有对外部函数变量的引用。随着程序的运行,该闭包不再被使用,为了优化性能,应如何确保相关内存被正确释放?请举例说明。
36.3万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 方法
    • 在JavaScript中,当闭包不再被使用时,将持有闭包的变量设置为null,这样JavaScript的垃圾回收机制(GC)就可以回收相关内存。因为垃圾回收机制会定期检查对象是否还有被引用,如果没有任何引用指向该对象,就会回收其占用的内存。
  2. 示例
function outer() {
    let largeData = new Array(1000000).fill(1); // 模拟一个占用较大内存的数据
    return function inner() {
        return largeData;
    };
}

let closure = outer();
// 假设这里已经使用完闭包,不再需要它
closure = null;
// 此时,闭包以及闭包引用的外部函数变量largeData就可以被垃圾回收机制回收,从而释放内存