【问题标题】:Populate array with integer sequence using for loop without crashing Chrome使用 for 循环填充具有整数序列的数组而不会使 Chrome 崩溃
【发布时间】:2015-01-23 00:51:31
【问题描述】:

我想用 1 000 000 到 10 000 000 之间的所有可能整数填充一个数组。当我运行下面的循环时,它会使 chrome 选项卡崩溃。我怎样才能做到这一点?

var arrList = [];
var list;

function gen() {
  for (var i = 1000000; i < 10000000; i++) {
    arrList.push(i);
  }
}

gen();
list = arrList.join(' '); // This line causes the crash
console.log(list);

【问题讨论】:

  • 你为什么要这样做?我猜该代码被视为恶意代码,因为您正试图占用大量内存。
  • @ChrisV 我正在创建单个区号中可能的电话号码列表。从 (nnn) 100-0000 开始。
  • 同样的问题 :)
  • @ChrisV 我认识的一个女孩说,如果我能猜到她的号码,她就会确认。
  • 它不会让我的 Chrome 标签崩溃。

标签: javascript arrays google-chrome for-loop crash


【解决方案1】:

导致崩溃的是console.log(list)。控制台无法处理尝试显示 72 MB 长的字符串。

当我取出那条线时,脚本运行成功,尽管它需要几秒钟。这会在 2-3 秒后提醒71999999

var arrList = [];
var list;

function gen() {
  for (var i = 1000000; i < 10000000; i++) {
    arrList.push(i);
  }
}

gen();
list = arrList.join(' '); 
alert(list.length);

【讨论】:

  • 我在您创建此答案时回复了您的最后一条评论。
  • 我不会崩溃。如果我删除 console.log() 它工作正常。
  • 好吧,该死。我将详细了解如何记录 JS 性能,看看我是否能准确地弄清楚它在哪一点对我来说崩溃了。
  • 你知道有什么方法可以记录 JS 发生了什么以及为什么选项卡会崩溃吗?我的标签崩溃后,我无法查看任何 JS 性能配置文件,并且在 chrome://crashes 上看不到任何内容。我尝试在设置中选中和取消选中“自动向 Google 发送使用情况统计信息和崩溃报告”。
  • 您可以尝试减小循环的大小,直到它不会崩溃。然后,您应该能够使用配置文件选项卡查看导致崩溃的原因。
猜你喜欢
  • 2014-04-09
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多