小编Ben*_*Ben的帖子

在javascript中使用大型数组时,释放浏览器内存的最佳方法是什么?

这就是我设置的方式:

  • container.html
  • database1.js(包含名为database1的大型数组)
  • database2.js(包含名为database2的大型数组)

这是一个数组样本(从6000多行缩短为2行):

var database1=[[
    "2010-01-03 07:45","2010-01-03 11:00","534","A","","","","","Installed washing machine","0","1","1","Indeed","",""],[
    "2010-03-20 15:00","2010-03-20 16:00","571","F","","","","","Installed oven","0","5","1","Indeed","",""],[
    etc,etc,etc...]];
Run Code Online (Sandbox Code Playgroud)

当我将database1.js附加到容器的头部时,windows中用于IE的内存从7,7MB跳到21,9MB.这很好,我现在可以通过名为database1的数组循环(第一行和第一列是在database1 [0] [0]).

问题是我需要不时地重新附加数据库文件,这样做会增加内存使用量(我以为数据库阵列会被覆盖).

因此,第一次重新添加将IE中的内存使用量提高到30,4MB,但随后每次重新添加时继续增加:30,4MB> 33,9MB> 39,5MB> 42,1MB等.

为了防止这种情况发生,我现在清除数组中的每个项目,然后再重新附加database1文件.

for ( var i=0, il=database1.length; i<il; i++ ){
delete database1[i];
}
//append database1.js to head code here
Run Code Online (Sandbox Code Playgroud)

这确实有帮助.内存使用率不会降至最初的7,7MB,但会从21,9MB减少到14,1MB.下一次重新添加会将内存增加到25,9MB(使用循环清除:18,8MB).下一次重新添加会将内存增加到29,3MB(使用循环清除:24,5MB).

我很高兴内存使用率没有快速攀升,但也许这可以进一步优化?不幸的是,重新加载HTML页面不是一种选择.

javascript arrays

7
推荐指数
1
解决办法
1187
查看次数

标签 统计

arrays ×1

javascript ×1