编程语言
首页 > 编程语言> > 将对象设置为null时的JavaScript(ES6)WeakMap垃圾回收

将对象设置为null时的JavaScript(ES6)WeakMap垃圾回收

作者:互联网

我刚刚读到WeakMaps通过将对象专门用作键来利用垃圾回收,将对象分配给null等同于将其删除:

let planet1 = {name: 'Coruscant', city: 'Galactic City'};
let planet2 = {name: 'Tatooine', city: 'Mos Eisley'};
let planet3 = {name: 'Kashyyyk', city: 'Rwookrrorro'};

const lore = new WeakMap();
lore.set(planet1, true);
lore.set(planet2, true);
lore.set(planet3, true);
console.log(lore); // output: WeakMap {{…} => true, {…} => true, {…} => true}

然后将对象设置为null:

planet1 = null;
console.log(lore); // output: WeakMap {{…} => true, {…} => true, {…} => true}

为什么输出相同?是否应该删除它,以便gc可以重用先前在应用程序中以后占用的内存?我将不胜感激.谢谢!

解决方法:

垃圾回收不会立即运行.如果您希望您的示例正常工作,则需要强制浏览器运行垃圾回收.

使用以下标志运行chrome:google-chrome –js-flags =“-expose-gc”.

现在,您可以通过调用全局gc()方法来强制进行垃圾回收.

enter image description here

标签:ecmascript-6,null,javascript,garbage-collection,weakmap
来源: https://codeday.me/bug/20191109/2011632.html