关于JS 数组的内存分配方式的讨论:
代码如下:
var arrT = new Array();
arrT[10254] = 'c';
arrT[2] = 'a';
arrT分配了多大的内存空间?数组长度是 2 还是 10255 ?
谢谢~
代码如下:
var arrT = new Array();
arrT[10254] = 'c';
arrT[2] = 'a';
arrT分配了多大的内存空间?数组长度是 2 还是 10255 ?
谢谢~
var arrT = new Array();
arrT[10254] = 'c';
arrT[2] = 'a';
alert(arrT.length);
能说明分配了 10254 个单位的内存吗?
应该不能吧, 因为除了 arrT[10254] ,arrT[2] 其它的都是 === null
js 应该是用到了 才占用内存的吧!
arrT[10254] 与arrT[2] ,很可能就是 变量 arrT.length === 2 与arrT.length === 10254 的区别而已
能说明分配了 10254 个单位的内存吗?
应该不能吧, 因为除了 a……
[/Quote]我在测试的过程中,将数组arrT[10254] 修改成 arrT[102540000],观察浏览器页面所占用的内存并没有多大改变。IE和Chrome测试结果相同。
下面两段代码运行后,IE页面耗费的内存分别为 28896 K ---> 28900 K , 节点个数由9增加到10240000,而内存只增加 4K。
arrT[-1] = new makeALine(-4, 43, 44);
arrT[4] = new makeALine(4, 43, 44);
arrT[8] = new makeALine(8, 81, 82);
//arrT[10240000] = new makeALine(1024, 10241, 10242);arrT[-1] = new makeALine(-4, 43, 44);
arrT[4] = new makeALine(4, 43, 44);
arrT[8] = new makeALine(8, 81, 82);
//arrT[10240000] = new makeALine(1024, 10241, 10242);
iE fireFox 正常有10k 内存 的跳动。
不信,你什么代码都不写,打开一个Hao 123 主页,
就仅仅在那里点刷新, 再看IE or Firefox 的内存占用情况(ctrl+alt+Delete),你就明白的。
JScript codearrT[-1] = new makeALine(-4, 43, 44);
arrT[4] = new makeALine(4, 43, 44);
arrT[8] = new makeALine(8, 81, 82);
//arrT[10240000] = new makeALine(1024, 10241, 10242);JScript codearrT[-1] = new makeALine(-4, 43, 44);
arrT[4] = new makeALine(4, 43, 44);
arrT[8] = new makeALine(8, 81, 82);
arrT[10240000] = new makeALine(1024, 10241, 10242);