Побочный эффект оператора «delete» в JavaScript

Как говорится «век живи, век учись, дураком помрёшь»:
Объяснение (по крайней мере для Хрома) очень простое: когда вы делаете delete testedObject[i].obj, V8 нормализует объект testedObject[i] — трансформирует его из быстрого компактного представления в медленное и раздутое представление на основе словаря, который еще и выделяется с запасом по размеру. При этом V8 не замечает, что после удаления в словаре будет пусто — и словарь (800 байтов) остается болтаться в воздухе. И так для каждого из ваших объектов.
Из коментария к статье на «Хабре», которая описывает странный эффект — при использовании оператора delete что-то продолжает занимать память.
3 сентября 2012 21:44

Глеб Арестов (http://arestov.me/) (инкогнито)
4 сентября 2012, 12:52

Я правильно понимаю что тут написано:
«когда вы делаете
var cur = testedObject[i];
delete cur.obj
V8 нормализует объект cur — трансформирует его из быстрого компактного представления в медленное и раздутое представление на основе словаря. При этом V8 не замечает, что после удаления в словаре будет пусто — и словарь (800 байтов) остается болтаться в воздухе.»?

Или иначе:
«когда вы делаете
var cur = {obj: {}, value: 55, sign: "5vvsgggs"};
testedObject[i] = cur;
delete cur.obj
V8 нормализует объект cur... При этом V8 не замечает, что после удаления в словаре будет пусто»

Нас не запутаешь! У меня все ходы записаны! Вместо *delete testedObject[i]* какой-то *delete testedObject[i].obj* подсовывают! А потом ещё и баги из скриншотов хрома в мозилу отправляют.

bolk (bolknote.ru)
4 сентября 2012, 13:50, ответ предназначен Глебу Арестову (http://arestov.me/)

Вместо *delete testedObject[i]* какой-то *delete testedObject[i].obj* подсовывают!
Ну так в исходной статье на Хабре речь и идёт o testedObject[i].obj.

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)