«

JavaScript闭包用多会造成内存泄露吗

时间:2024-3-3 11:19     作者:韩俊     分类: Javascript


今天小编给大家分享一下JavaScript闭包用多会造成内存泄露吗的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

场景思考

以下案例: A 页面引入了一个 debounce 防抖函数,跳转到 B 页面后,该防抖函数中闭包所占的内存会被 gc 回收吗?

该案例中,通过变异版的防抖函数来演示闭包的内存回收,此函数中引用了一个内存很大的对象 info(42M的内存),便于明显地对比内存的前后变化

注:可以使用 Chrome 的 Memory 工具查看页面的内存大小:

场景步骤:

1) util.js 中定义了 debounce 防抖函数

export const debounce = (fn, time) => {  let info = {    arr: new Array(10 * 1024 * 1024).fill(1),    timer: null
 };  return function (...args) {
   info.timer && clearTimeout(info.timer);
   info.timer = setTimeout(() => {
     fn.apply(this, args);
   }, time);
 };
};

标签: javascript

热门推荐