Подтвердить что ты не робот

Сколько памяти node выделяет для нулевых значений в массивах

Следующее за этим вопросом:

Множество нулевых значений в массиве означает любой вред?

Я сделал это с помощью node.js:

arr=[]
arr[1000]=1
arr[1000000000]=2
arr.sort()

И я получил

FATAL ERROR: JS Allocation failed - process out of memory

Итак, это оставляет мне вопрос (я не мог найти его на Yahoogle), сколько памяти фактически выделено для нулевой записи в массиве в node. Я не планирую использовать 1000000000 записей, даже не закрываю, но, возможно, это еще не стоит выделять память...

Кто знает, как я могу проверить?

4b9b3361

Ответ 1

Итак, node.js не выделяет память для значений undefined в массиве. Сбой, который я испытал, должен был быть сбойным, поскольку никто другой не мог его воспроизвести и установить последняя версия node.js устранила проблему и для меня.

Ответ 2

EDIT: Извините за неточность, возможно, не применимо к JAVA.
Тем не менее может оказаться полезным для тех, кому это нужно в другом приложении.

Массив ссылки выделяет x

поэтому выделение arr [100000] будет выделять 100 kb x 4b ~ = 0.5Mb (аппроксимируя)

и YES, определенно, если вы не собираетесь использовать весь массив,
вы должны рассмотреть HashMap, который является структурой данных именно для этого.
HashMap лучше всего иметь большой диапазон поиска с относительно небольшим количеством элементов.

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