Невозможно обработать геойсон: куча JavaScript не хватает памяти - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь использовать kepler.gl для обработки файла geojson и его визуализации. Я использовал модуль Кеплера process.processGeojson , чтобы использовать этот файл. Файл имеет размер 380 Мб и при обработке выдает ошибку

Кучи JavaScript не хватает памяти. [Это ошибка времени выполнения, возникающая при вводе * npm start *

Я попытался запустить код как таковой

node --max_old_space_size=8192 node_modules/kepler.gl/*.js && npm start

, чтобы покрыть все оперативные памяти моего ноутбука, но это все ещевыдает ошибку кучи из памяти.

Это код, написанный в React.js, который вызывает проблему

class App extends Component {
  componentDidMount() {

    const londonData = Processors.processGeojson(london); 

    // Create dataset structure
    dispatch(addDataToMap({
      datasets: {
        info: {
          label: 'Traffic data in London',
          id: 'test_trip_data'
        },
        // use processGeojson to convert geojson to kerpler.gl struct
        data: londonData
      }
     }));
  }

Ожидаемые результаты: Когда я запускаю приведенный выше код с небольшим файлом CSV (<2MB) веб-приложение работает отлично и предварительно загружает данные. </p>

Фактические результаты: Поскольку geojson Я пытаюсь обработать 380M, я получаю следующие ошибки

<--- JS stacktrace --->

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

    0: ExitFrame [pc: 0x2557c4d5be3d]
    1: StubFrame [pc: 0x2557c4d4b476]
Security context: 0x13692fb1e6e9 <JSObject>
    2: replace [0x13692fb105e9](this=0x1369fe802201 <Very long string[389761882]>,0x13699c38f8e9 <JSRegExp <String[610]: ((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
 1: 0x10003d035 node::Abort() [/usr/local/bin/node]
 2: 0x10003d23f node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
 3: 0x1001b8e15 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
 4: 0x100586d72 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/usr/local/bin/node]
 5: 0x100590274 v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
 6: 0x10055f576 v8::internal::Factory::NewFixedArrayWithFiller(v8::internal::Heap::RootListIndex, int, v8::internal::Object*, v8::internal::PretenureFlag) [/usr/local/bin/node]
 7: 0x10081e506 v8::internal::Runtime_RegExpExecMultiple(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
 8: 0x2557c4d5be3d 
Abort trap: 6

Буду очень признателен за любые советы / помощь / предложения о том, как я могу решить эту проблему.

...