致命错误:无效的数组长度 分配失败 - JavaScript堆内存不足

6

错误:

<--- Last few GCs --->

[873:0x1020aa000]    47109 ms: Scavenge 2107.9 (2131.9) -> 2092.1 (2131.9) MB, 0.3 / 0.0 ms  (average mu = 0.995, current mu = 0.999) allocation failure 
[873:0x1020aa000]    47231 ms: Scavenge 2107.9 (2131.9) -> 2092.1 (2131.9) MB, 0.2 / 0.0 ms  (average mu = 0.995, current mu = 0.999) allocation failure 
[873:0x1020aa000]    47353 ms: Scavenge 2107.9 (2131.9) -> 2092.1 (2131.9) MB, 0.2 / 0.0 ms  (average mu = 0.995, current mu = 0.999) allocation failure 


<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x27af028cfc7d]
Security context: 0x00a9d921d971 <JSObject>
    1: push [0xa9d9205831](this=0x00a92dc86431 <JSArray[112813858]>,0x00a9f2d5fdf1 <String[17]\: \n                >)
    2: /* anonymous */ [0xa92dc86471] [0x00a9bba025b1 <undefined>:~1] [pc=0x27af02959ff7](this=0x00a9051847e1 <JSGlobal Object>,0x00a92dc86531 <Object map = 0xa982312831>,0x00a9f2d4f6a9 <JSFunction exports.escapeXML (sfi = 0xa9f2d4edc9)>,0x00...

FATAL ERROR: invalid array length Allocation failed - JavaScript heap out of memory
 1: 0x100060e87 node::Abort() [/usr/local/Cellar/node/11.10.1/bin/node]
 2: 0x1000614f5 node::OnFatalError(char const*, char const*) [/usr/local/Cellar/node/11.10.1/bin/node]
 3: 0x10017a687 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/Cellar/node/11.10.1/bin/node]
 4: 0x10017a628 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/Cellar/node/11.10.1/bin/node]
 5: 0x100437638 v8::internal::Heap::UpdateSurvivalStatistics(int) [/usr/local/Cellar/node/11.10.1/bin/node]
 6: 0x10041de6a v8::internal::Factory::AllocateRawFixedArray(int, v8::internal::PretenureFlag) [/usr/local/Cellar/node/11.10.1/bin/node]
 7: 0x10041d781 v8::internal::Factory::NewFixedArrayWithFiller(v8::internal::Heap::RootListIndex, int, v8::internal::Object*, v8::internal::PretenureFlag) [/usr/local/Cellar/node/11.10.1/bin/node]
 8: 0x1003dce56 v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::ConvertElementsWithCapacity(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, unsigned int, unsigned int, unsigned int, int) [/usr/local/Cellar/node/11.10.1/bin/node]
 9: 0x1003dcd0c v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::GrowCapacityAndConvertImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int) [/usr/local/Cellar/node/11.10.1/bin/node]
10: 0x1003db82a v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::Add(v8::internal::Handle<v8::internal::JSObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, unsigned int) [/usr/local/Cellar/node/11.10.1/bin/node]
11: 0x1005068dc v8::internal::JSObject::AddDataElement(v8::internal::Handle<v8::internal::JSObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes) [/usr/local/Cellar/node/11.10.1/bin/node]
12: 0x100505a38 v8::internal::Object::AddDataProperty(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, v8::internal::ShouldThrow, v8::internal::Object::StoreFromKeyed) [/usr/local/Cellar/node/11.10.1/bin/node]
13: 0x10060fd43 v8::internal::Runtime::SetObjectProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::LanguageMode) [/usr/local/Cellar/node/11.10.1/bin/node]
14: 0x100612c8c v8::internal::Runtime_SetProperty(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/Cellar/node/11.10.1/bin/node]
15: 0x27af028cfc7d 
[nodemon] app crashed - waiting for file changes before starting...

每当我运行app.js文件并点击页面时,都会出现这个错误,它尝试加载了一分钟但没有成功,然后崩溃。我知道这个问题以前已经被问过。
然而,我已经尝试过:
export NODE_OPTIONS=--max_old_space_size=4096

我还尝试了以下方法:

node --max_old_space_size=4096 app.js

然后运行我的app.js,问题仍然存在。我不确定我的导出变量去了哪里,无法找到任何.bashrc文件等。我甚至不确定出了什么问题,因为我对编码有点新。


可能是node - invalid array length的重复问题。 - Nir Alfasi
3
这通常意味着您的代码进入了一个无限循环或类似的问题。尝试使用V8分析器找出问题所在。 - Nir Alfasi
更新帖子,附上完整的错误信息。 - Gabriel Nessi
这是关于编程的内容,以下是翻译:这里的答案可能会有所帮助。 - Esqarrouth
1个回答

6

答案:

我已经解决了这个问题,正如@alfasin建议的那样,我有一个无限循环在后台运行。


你是如何找到这个循环的? - katzenhut
很可能是一个while循环,全局搜索“while”,确保它们都不会无限循环。如果你仍然无法解决问题,请在stackoverflow上发布带有所有不同循环的帖子@katzenhut。 - notacorn
@notacorn - 谢谢你,但我希望有更像工具的东西,就像问题评论中提到的V8-Profiler一样。手动代码分析往往会相当缓慢... - katzenhut
你可以在每个循环中使用console.log输出唯一的指标,例如@katzenhut - notacorn
我在我的应用程序中有无限循环,每X秒钟调用一次。但它们不应该引起这样的问题。我该如何找到导致此问题的循环? - Esqarrouth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接