2013-09-04 4 views
0

Когда я удаляю элементы из массива в javascript, используя метод сплайсинга, возвращается массив удаленных элементов.Управление памятью Javascript: удаление и сращивание

var a = [{name:'object1'},{name:'object2'},{name:'object3'}]; 

// a.splice(0,2) -> [{name:'object1'},{name:'object2'}] 
// Where do these guys live now? Are they really gone? 

Нужно ли мне затем «удалять» на этих возвращенных объектах, чтобы убедиться, что они выведены из памяти? Может ли сборщик мусора справиться с этим? Могу ли я доверять этому?

ответ

1

Объекты «ушли» (с вашей точки зрения), и GC фактически освободит память, если сочтет это уместным. JavaScript не дает вам четкого контроля над сборкой мусора.

Если вы обеспокоены производительностью, то лучше всего (после профилирования, конечно) сосредоточиться на экономии ассигнований, а не на том, чтобы беспокоиться о том, когда именно что-то получится GC'd, так как это поведение изменится в зависимости от того, JS, в котором вы находитесь.

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