javascript – 内存泄漏与KnockoutJS foreach绑定

在Google Chrome中运行我的KnockoutJS v3.4.2(测试)应用程序时遇到问题.
我的页面的内存使用量不断增加.

测试代码一个非常简单的代码段,它每秒更改可观察数组中的项目:

HTML

<html>
    <head>
        <title>KnockoutJS</title>
    </head>
    <body>
        <h1>Foreach test</h1>
        <ul id="ul-numbers" data-bind="foreach: { data: listofItems }">
            <li>
                <span data-bind="text: $data"></span>
            </li>
        </ul>

        <script type="text/javascript" src="./lib/knockout.js"></script>
        <script type="text/javascript" src="./index.js"></script> 
    </body>
</html>

JavaScript的:

var vm = {
    listofItems: ko.observableArray()
};

window.setInterval(function updateList(){
    var array = [];

    for(var i = 0 ; i < 1000; i++){
        var num = Math.floor( Math.random() * 500);
        array.push(num);
    }

    vm.listofItems(array);
},1000);

ko.applyBindings(vm);

内存使用情况:

>在Firefox中,内存使用率不会增加
开始:459.6 MB —> 1小时后:279.4 MB
>在chrome中,内存使用量不断增加(单个选项卡的内存):
开始:52.912 MB —> 1小时后:566.120 MB
>边缘内存使用量也不断增加(单个选项卡的内存):
开始:109.560 MB —> 1小时后:385.820 MB

在这代码段中做错了什么?或者这是Google Chrome还是KnockoutJS中的错误

解决方法

显然这是一个浏览器问题.

当我现在运行测试项目时,内存不会增加.
测试项目可以在这里找到:https://github.com/knockout/knockout/issues/2223

解决Google Chrome版本’58.0.3029.110′.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...