打开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