Android Navigation Drawer переписывает мой основной макет

V8 (узел движка JavaScript построен на) до тех пор, пока very не получил жесткий предел размера кучи около 1,9 ГБ .

Узел v0.10 застрял на старой версии V8 (3.14) из-за нарушения изменений API V8 вокруг собственных аддонов. Узел 0.12 будет обновлен до новейшего V8 (3.26), который сломает многие родные модули, но откроет дверь для ограничения уровня кучи 1.9 ГБ.

Итак, поскольку он стоит, процесс с одним узлом может хранить не более 1,9 ГБ кода JavaScript, объектов, строк и т. д. в сочетании . Это означает, что максимальная длина строки меньше 1,9 ГБ.

Вы можете [] обойти это, используя Buffer s, которые хранят данные вне кучи V8 (но все же в куче вашего процесса). 64-битная сборка узла может в значительной степени заполнить всю вашу оперативную память, если у вас никогда не будет более 1,9 ГБ данных в переменных JavaScript.


Все, что сказал, вы никогда не должны приближаться этот предел. Когда вы работаете с этим большим количеством данных, вы должны обрабатывать его как поток. У вас никогда не должно быть больше нескольких мегабайт (максимум) в памяти за один раз. Хорошей новостью является узел, особенно хорошо подходящий для работы с потоковыми данными.

Вы должны задать себе несколько вопросов:

  • Какие данные вы действительно получаете от user?
  • Почему вы хотите сохранить его в формате JSON?
  • Действительно ли это хорошая идея для наполнения гигабайтов в JSON? (Ответ - нет.)
  • Что будет с данными позже, после того, как оно будет сохранено? Будет ли ваш код читать? Что-то еще?

Вопрос, который вы опубликовали, на самом деле довольно неопределенен в отношении того, что вы на самом деле пытаетесь выполнить. Для получения более конкретных рекомендаций обновите свой вопрос с дополнительной информацией.

Если вы ожидаете, что данные никогда не будут такими большими, просто наведите разумный лимит в 10 МБ или что-то на вход, буферизуйте все это и используйте JSON.stringify.

Если вы планируете больше обрабатывать данные, вам нужно передать поток прямо на диск. Посмотрите на потоки преобразования , если вам нужно обработать / изменить данные перед тем, как перейти на диск. Например, существуют модули, которые связаны с потоковой передачей JSON .

0
задан Rishad Gandhy 25 February 2015 в 11:42
поделиться