2014-01-31 2 views
0

Я работаю над страницей, которая, в конечном итоге, может иметь более 100 массивов, только некоторые из которых будут использоваться в любой момент времени.Должен ли я очищать неиспользуемые массивы javascript?

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

Должен ли я изменить свой код, чтобы очистить массивы, когда они не используются? Если да, то каков наилучший способ сделать это? Я думаю, var myArray = new array(), но, возможно, есть лучший вариант.

+1

Если вы хотите «освободить» значение для сбора мусора, убедитесь, что никакие переменные или свойство не ссылаются на него. Вы можете достичь этого, назначив любое другое значение переменной, например. 'Null'. –

+1

Уверен, что у вас НЕ должно быть 100 глобальных массивов, если вы используете только некоторые из них в любой момент времени. В правильном дизайне не было бы много использованных глобальных данных. Скорее, эти данные должны быть либо локальными по объему, и использоваться только определенной функцией или должны быть привязаны к объекту, который поддерживается только во время его использования. Настоящий ответ здесь заключается в том, что вам нужно исправить свой дизайн, чтобы состояние сохранялось в объектах, которые существуют только при их использовании. – jfriend00

+0

@ jfriend00 Спасибо за это. Я пришел к одному и тому же выводу за одну ночь и изменил свою структуру, так что только несколько массивов повторно заполняются новыми данными по мере необходимости. – Thailandian

ответ

0

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

Если память действительно становится проблемой, или вы заметили проблемы с производительностью, вы можете просто передать новый массив этих переменных:

myArray = []; 

сборщик мусора будет убирать объекты, которые вы разыменованных.

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

Смежные вопросы