node-osm-stream
node-osm-stream copied to clipboard
Out of memory error
I'm tryed to process large .osm file and got this:
<--- Last few GCs --->
[4314:0x3be41c0] 788839 ms: Mark-sweep 1349.7 (1406.1) -> 1349.5 (1406.6) MB, 1499.5 / 0.0 ms allocation failure GC in old space requested
[4314:0x3be41c0] 790368 ms: Mark-sweep 1349.5 (1406.6) -> 1349.4 (1375.1) MB, 1529.3 / 0.0 ms last resort GC in old space requested
[4314:0x3be41c0] 791849 ms: Mark-sweep 1349.4 (1375.1) -> 1349.4 (1374.6) MB, 1480.8 / 0.0 ms last resort GC in old space requested
<--- JS stacktrace --->
==== JS stack trace =========================================
0: ExitFrame [pc: 0x13944e60427d]
Security context: 0x1039978206a9 <JSObject>
1: fileProcessor [/importer.js:~23] [pc=0x13944ea5b32c](this=0xc5ce40abbe9 <OSMStream map = 0x184279b53d81>,data=0x3b63b47298e9 <Object map = 0x184279b38da1>,callback=0x3b63b4729a79 <JSBoundFunction (BoundTargetFunction 0x3b63b4729a39)>)
2: pushData [/node_modules/node-osm-stream/lib/node-osm-stream.js:~43] [pc=0x1...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node::Abort() [/usr/local/bin/node]
2: 0x88050c [/usr/local/bin/node]
3: v8::Utils::ReportOOMFailure(char const*, bool) [/usr/local/bin/node]
4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [/usr/local/bin/node]
5: v8::internal::Factory::NewFixedArrayWithMap(v8::internal::Heap::RootListIndex, int, v8::internal::PretenureFlag) [/usr/local/bin/node]
6: v8::internal::HashTable<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::New(v8::internal::Isolate*, int, v8::internal::PretenureFlag, v8::internal::MinimumCapacity) [/usr/local/bin/node]
7: v8::internal::HashTable<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::EnsureCapacity(v8::internal::Handle<v8::internal::NameDictionary>, int, v8::internal::PretenureFlag) [/usr/local/bin/node]
8: v8::internal::BaseNameDictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::EnsureCapacity(v8::internal::Handle<v8::internal::NameDictionary>, int) [/usr/local/bin/node]
9: v8::internal::BaseNameDictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::AddNoUpdateNextEnumerationIndex(v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, int*) [/usr/local/bin/node]
10: v8::internal::BaseNameDictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::Add(v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, int*) [/usr/local/bin/node]
11: v8::internal::LookupIterator::ApplyTransitionToDataProperty(v8::internal::Handle<v8::internal::JSReceiver>) [/usr/local/bin/node]
12: 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/bin/node]
13: v8::internal::Object::SetProperty(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::LanguageMode, v8::internal::Object::StoreFromKeyed) [/usr/local/bin/node]
14: 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/bin/node]
15: v8::internal::Runtime_SetProperty(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
16: 0x13944e60427d
node -v
v10.2.1
node ran out of memory. you need to allocate more memory for node.
try node --max_old_space_size=4096 <your-script>
without the tags
But if it is a "stream" api, why does it need a lot of RAM?