gpt4 book ai didi

javascript - 如何检测对象是否已在 Javascript 中被垃圾回收?

转载 作者:数据小太阳 更新时间:2023-10-29 05:12:19 28 4
gpt4 key购买 nike

我正在构建一个使用 var 创建 Level 对象的 JavaScript 游戏:

function start() {
var myGameLevel = new Level(2);
}

这个 Level 对象有很多功能,主要是向 DOM 添加元素并使它们具有交互性。一个简化:

function Level(i) {
var _difficulty = i;

this.init = function(){
jQuery("#container").append(...game elements here...);
jQuery("#button").on('click', function() {...});
}
}

我的问题:我如何知道在 start 函数中创建的 Level 对象是否已被垃圾回收?我的目标是只使用 var 变量,这样就没有外部引用。当 DOM 中的所有游戏元素都被清除后,我预计 Level 对象会从内存中释放,但我怎么能确定呢?

最佳答案

通常在 JavaScript 中垃圾回收是不确定的。您无法知道某个对象是否或何时被垃圾回收。这适用于强引用的对象。

在 ES12 及之后的版本中,您可以使用 FinalizationRegistry .

终结器可让您使用 JavaScript 回调处理对象何时被垃圾回收。限制仍然是,何时执行回调是不确定的。这可能需要一分钟或一个小时。

// object creation
let abc = new Array(200).fill(true);

const cleanup = new FinalizationRegistry(key => {
// your code here
});

// tagging variable abc to finalizer
cleanup.register(abc, 'werwer');

// abc = null;

关于javascript - 如何检测对象是否已在 Javascript 中被垃圾回收?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28564629/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com