Сообщение от Wizout
|
и еще по поводу того как тут хорошо тут работает GC? чтобы объект быстрее был удален из памяти, стоит ли при прекращении использования объекта присваивать NULL, чтобы он быстрее удалился или это никак не повлияет работу GC?
|
обьекты в JS удаляются автоматически тогда когда на обеькт перестает существовать хотя бы одна ссылка.
например
var q = {a:20}
q это НЕ имя обьекта, как может показаться,
q это лишь ссылка на обьект, то есть ТО что с право создалось и засунулось в память, а ссылка на это засунулась в
q
мы так же можем сделать так
var w = q
оператор ровно посмотрел что находится в
q? посмотрел что там ссылка, посмотрел что по ней, посмотрел адрес этого в памяти))
сгенерировал новую ссылку, и засунул её в
w
теперь в
q и
w лежит ссылки на одну и ту же область в памяти)) и если
сделать так
q.a = 400
то и
w.a станет 400
потому чо это одно и то же) как очевидно))
так вот чтобы УДАЛИТЬ обьект ты думаешь что нужно сделать так:
либо q либо w прировнять к NULL ))
на само деле не так))
это действие просто заменит обьект {a:400} пустым обьектом из нулей, а как известно нули память тоже жрут.
чтобы удалить обьект я уже говорил что нужно удалить все ссылки на него
оператор delete
delete q
delete w
все, вот терь когда сборщик мусора (а эта хреновина так называется) пройдется по памяти и заметит что есть участок на который ни че не ссылается) она очистит его))