es6 --- > 使用node的memoryUsage检测WeakMap()

打开node命令行

$ node --expose-gc

// --expose-gc:表示允许手动执行垃圾回收机制

// 手动执行一次垃圾回收,保证获取的内存使用状态准确
> global.gc();

在这里插入图片描述

// 查看内存占用的初始状态,
> process.memoryUsage();

在这里插入图片描述
可以发现初始用了4.7MB左右

// 创建一个WeakMap()实例wm
> let wm = new WeakMap();

// 创建一个变量key,指向一个5*1024*1024的数组
> let key = new Array(5 * 1024*1024);

// 将key数组set进实例wm中
> wm.set(key,1);

在这里插入图片描述

// 手动执行一次垃圾回收,并查看此时的内存占用情况
> global.gc();
> process.memoryUsage();

在这里插入图片描述
此时内存占用用到了47MB左右.

// 清除对key数组的引用,注意:没有清除实例wm对key的引用
> key = null;

// 再次手动执行垃圾回收机制一次,并查看内存状态
> global.gc()
> process.memoryUsage()

在这里插入图片描述
可以看到此时的内存占用是5.1MB左右…
说明WeakMap类对键名的引用是弱引用…即:垃圾回收机制不将该引用考虑在内

参考《ES6标准入门》(第3版) P226、P228~P229

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值