闭包内存占用的测试案例

51 阅读1分钟
<body>
    <button class="create">创建一系列的数组对象</button>
    <button class="destroy">销毁一系列的数组对象</button>

    <script>
    function createArray() {
        var arr = new Array(1024*1024).fill(100)
        function test() {
            console.log(arr)
        }
        return test
    }

    // 点击按钮
    var totalArr = []

    var createBtnEl = document.querySelector(".create")
    var destroyBtnEl = document.querySelector(".destroy")
    createBtnEl.onclick = function() {
        for (var i = 0; i < 100; i++) {
            totalArr.push(createArray())
        }
    }
    destroyBtnEl.onclick = function() {
    totalArr=null
    }
    </script>
</body>
  • createArray()函数

    • 创建一个长度为 1MB(1024*1024)的数组,所有元素初始化为 100。
    • 内部定义了一个 test() 函数(未实际调用),用于打印数组内容。
  • 按钮点击事件

    • 创建按钮:点击后会调用 createArray() 100 次,并将结果(实际为 undefined,因为函数无返回值)存入 totalArr

image.png