在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
解决方法
显然这是一个浏览器问题.
当我现在运行测试项目时,内存不会增加.
测试项目可以在这里找到:https://github.com/knockout/knockout/issues/2223
已解决Google Chrome版本’58.0.3029.110′.