大きなGeoJSONファイルを自分のプログラムに読み込もうとしていますが、dev_server(携帯用の問題ではありませんでした)で 'メモリ不足'が発生しました。失敗はNodejsと大きなGeoJSONファイルを読み込み、検索するには?
ですSecurity context: 0x2a7393fcfb51 <JS Object>
1: parse [native json.js:62] [pc=0x25e952e638ef] (this=0x2a7393fc9111 <a JSON with map 0xb4bfd40a0e1>,C=0x3e8116304201 <Very long string[64906954]>,w=0x2a7393f04381 <undefined>)
2: arguments adaptor frame: 1->2
3: loadGeoJson [/home/myuser/myproject/node/geo-locations.js:26] [pc=0x25e952f451ff] (this=0x362211a62d19 <a GeoLocations with map 0x3e0b88b2b5b1>...
FATAL ERROR: Committing semi space failed. Allocation failed - process out of memory
1: node::Abort() [node]
2: 0x10a08dc [node]
3: v8::Utils::ReportApiFailure(char const*, char const*) [node]
4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [node]
5: v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [node]
6: v8::internal::Heap::CollectGarbage(v8::internal::GarbageCollector, char const*, char const*, v8::GCCallbackFlags) [node]
7: v8::internal::Factory::NewFixedArray(int, v8::internal::PretenureFlag) [node]
8: v8::internal::JsonParser<false>::ParseJsonArray() [node]
9: v8::internal::JsonParser<false>::ParseJsonValue() [node]
10: v8::internal::JsonParser<false>::ParseJsonArray() [node]
11: v8::internal::JsonParser<false>::ParseJsonValue() [node]
12: v8::internal::JsonParser<false>::ParseJsonArray() [node]
13: v8::internal::JsonParser<false>::ParseJsonValue() [node]
14: v8::internal::JsonParser<false>::ParseJsonObject() [node]
15: v8::internal::JsonParser<false>::ParseJsonValue() [node]
16: v8::internal::JsonParser<false>::ParseJsonObject() [node]
17: v8::internal::JsonParser<false>::ParseJsonValue() [node]
18: v8::internal::JsonParser<false>::ParseJsonArray() [node]
19: v8::internal::JsonParser<false>::ParseJsonValue() [node]
20: v8::internal::JsonParser<false>::ParseJsonObject() [node]
21: v8::internal::JsonParser<false>::ParseJsonValue() [node]
22: v8::internal::JsonParser<false>::ParseJson() [node]
23: v8::internal::JsonParser<false>::Parse(v8::internal::Handle<v8::internal::String>) [node]
24: v8::internal::Runtime_ParseJson(int, v8::internal::Object**, v8::internal::Isolate*) [node]
25: 0x25e9525092a7
Aborted (core dumped)
次のようにこの問題がある引き起こすと呼ばれているコード:私は2つの行を破壊しようとしているが、私はクラッシュが発生していないことを行っていることから、にそれは難しい作っ
JSON.parse(fs.readFileSync(filepath,"utf-8"))
デバッグ。その間、GeoJSONファイルをロードしようとするより良い方法があるかどうかを見たいと思います。
私がやっていることは、GeoJSONファイルを読み込んで、ポイントがポリゴン内にあるかどうかを調べることです。私はこれをMongoDBに投げ込むことを考えましたが、私は半一時的なファイルの内容を扱っています。
誰にも提案はありますか?
私はあなたが念頭に置いていた他の解決策について興味がありますが、それは仕事をしているようです。 –
ファイル全体をメモリに読み込まない方法もありました。ノードストリームを使用してファイルの塊をメモリに読み込むことはできますが、geoJSONファイルの使用方法によってはこれが役に立たないことがあります。 – user2263572