![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2007
Сообщений: 27
|
|
|
|||||
|
Регистрация: Oct 2007
Сообщений: 27
|
Спасибо !
|
|
|||||
|
Стоит, наверное, добавить, что приравнивание к null саму ссылку не "убивает". То есть после:
Свойство a все еще существует. Чтобы удалить свойство объекта, нужно воспользоваться таким приемом: Вот после этого у объекта abc свойства "a" больше не будет.
__________________
...вселенская грусть |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
В вашем случае вообще ничего удалять не нужно. Даже abc = null; не нужен. Данный объект прекрасно подберется сборщиком мусора.
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
i.o. Скажите, а почему сборщик мусора удалит этот объект, даже если не присваивать ему значение null? Ведь объект существует. Да, пусть он пустой, но он есть и ссылка на него сохранена. Ведь вдруг мне этот объект понадобится позже, а мусоросборщик удалит его почему-то...
|
|
|||||
|
Отвечу за уважаемого i.o.
Приведенный выше код вероятнее всего написан в теле функции. В приведенном коде ссылка на объект нигде не сохраняется. Соответственно, объект "живет" только во время выполнения неизвестной нам функции. А это, в свою очередь, означает что объект так и не будет сохранен в куче и умрет по завершении работы со стеком. То есть GC может даже ничего не узнать об этом объекте, он сам по себе "умрет" по завершении работы функции, потому как ссылок на этот объект ни у кого нет.
__________________
...вселенская грусть |
|
|||||
|
Конечно, если этот объект создан в теле функции, то он удалиться, это логично и никаких вопросов не вызывает. Но просто в примере выше не было сказано или показано, что этот объект создаётся в функции, по этому и озадачился вопросом, почему сборщик мусора удалит этот объект.
|
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
![]() 1. Почему не надо занулять и удалять внутренние поля в данном случае? Да потому что в них нет ссылок на сложные объекты, и самое главное, нет кольцевых ссылок, которые могут стать причиной утечки памяти. 2. Даже просто занулять объект далеко не всегда нужно, т.к. GC сам прекрасно определяет, когда объект становится ненужным. Другое дело, когда вы точно уверены, что данную ссылку нужно удалить, то тут да - зануляйте ![]()
__________________
Загружаем картинки, минуя ошибки безопасности Последний раз редактировалось i.o.; 13.06.2012 в 07:20. |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|