Re: Вопросы по GC
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.11.05 03:47
Оценка: 8 (1) +5
Здравствуйте, Anton Batenev, Вы писали:

Список вопросов говорит о том, что ты вообще слабо понимашь что такое ЖЦ и как он работает. Очень советую почитать Рихтера.

AB>* Для того, чтобы GC сам удалял объект, должен ли я его наследовать от Object (или его производной)?


"Он" — это объект? Ну, да создать наследника ЖЦ в дотнете все равно невозможно. Так что будем считать, что "да".

Ты физически не сможешь создать объект не унаследованный от object. Даже если ты не укажешь ни какого родителя, класс все равнь будет наследником object. Исключением являются вэлью-типы, но и они виртуально наследуются от object.

AB>* Удаляет ли GC массивы простых объектов (int, enum)?


ЖЦ вообще ничего не удаляет. Идея ЖЦ в том, что все недоступные объекты автоматически мертвы, а значит место отведенное под них свободно. ЖЦ никода не интересуется тем какие объекты метрвы. Он интересуется тем какие объекты живы.

AB>* Приводит ли вызов Dispose к удалению объекта?


Нет. Dispose — это паттерн призванный облегчить контроль неуправляемых ресурсов (например, хндлов файлов). Иными словами это просто метод и соглашение о том, что после того как объект стал не нужен нужно вызвать этот метод.

AB> Если да,


Нет, но...

AB>то рекомендуется ли вызывать Dispose для объектов, которые точно больше не нужны?


Не просто рекомендуется, а крайне настоятельно рекомендуется. Друго дело, что рекомендуется делать это неявно, а через использование конструкции using (в C#).

AB> Будет ли полезным после Dispose вызвать GC.Collect?


Dispose будет полезен везде где он не вреден. А вот GC.Collect вреден везде кроме тестов и очень редких случаев хаков.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.