问:JS 数组Array的内存分配方式

tingsky 2011-12-31 02:09:34
关于JS 数组的内存分配方式的讨论:
代码如下:


var arrT = new Array();
arrT[10254] = 'c';
arrT[2] = 'a';


arrT分配了多大的内存空间?数组长度是 2 还是 10255 ?
谢谢~
...全文
319 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tingsky 2012-01-02
  • 打赏
  • 举报
回复
写错了,修改第二段代码 arrT[10240000] = new makeALine(1024, 10241, 10242);
JScript code

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);



JScript code

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);
hetengfei_ 2012-01-02
  • 打赏
  • 举报
回复
其实,
iE fireFox 正常有10k 内存 的跳动。
不信,你什么代码都不写,打开一个Hao 123 主页,
就仅仅在那里点刷新, 再看IE or Firefox 的内存占用情况(ctrl+alt+Delete),你就明白的。
tingsky 2012-01-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hetengfei_ 的回复:]

[Quote=引用 1 楼 jayrao5566 的回复:]
JScript code
var arrT = new Array();
arrT[10254] = 'c';
arrT[2] = 'a';
alert(arrT.length);

[/Quote]
jayrao5566 的结果是 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);


hetengfei_ 2012-01-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jayrao5566 的回复:]
var arrT = new Array();
arrT[10254] = 'c';
arrT[2] = 'a';
alert(arrT.length);

[/Quote]
jayrao5566 的结果是 10254:
能说明分配了 10254 个单位的内存吗?
应该不能吧, 因为除了 arrT[10254] ,arrT[2] 其它的都是 === null
js 应该是用到了 才占用内存的吧!
arrT[10254] 与arrT[2] ,很可能就是 变量 arrT.length === 2 与arrT.length === 10254 的区别而已
huaye 2011-12-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jayrao5566 的回复:]
JScript code

var arrT = new Array();
arrT[10254] = 'c';
arrT[2] = 'a';
alert(arrT.length);
[/Quote]
jayrao5566 2011-12-31
  • 打赏
  • 举报
回复

var arrT = new Array();
arrT[10254] = 'c';
arrT[2] = 'a';
alert(arrT.length);

87,915

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧