Основные сведения о существовании объектов

Основные сведения о существовании объектов

При построении C#-приложений вы вправе предполагать, что управляемая динамическая память будет обрабатываться без вашего прямого вмешательства. "Золотое правило" управления памятью .NET является очень простым.

Правило. Следует поместить объект в управляемую динамическую память с помощью ключевого слова new и забыть об этом.

Сборщик мусора уничтожит созданный объект, когда этот объект будет больше не нужен. Cледующий очевидный вопрос: "Как сборщик мусора определяет, что объект больше не нужен?" Краткий (т.е. упрощенный) ответ заключается в том, что сборщик мусора удаляет объект из динамической памяти тогда, когда объект становится недоступным для всех частей программного кода. Предположим, что вы имеете метод, размещающий локальный объект Car.

public static void MakeACar() {

 // Если myCar является единственной ссылкой на объект Car,

 // то объект может быть уничтожен после возвращения из метода.

 Car myCar = new Car();

 …

}

Обратите внимание на то, что ссылка на объект (myCar) была создана непосредственно в методе MakeACar() и не передавалась за пределы области видимости определяющего эту ссылку объекта (ни в виде возвращаемого значения, ни в виде параметров ref/out). Поэтому после завершения работы вызванного метода ссылка myCar становится недоступной, и соответствующий объект Car оказывается кандидатом для удаления в "мусор". Однако следует понимать, что вы не можете гарантировать немедленное удаление этого объекта из памяти сразу же по завершении работы MakeACar(). В этот момент можно гарантировать только то, что при следующей сборке мусора в общеязыковой среде выполнения (CLR) объект myCar может быть без опасений уничтожен.

Вы, несомненно, обнаружите, что программирование в окружении, обеспечивающем автоматическую сборку мусора, значительно упрощает задачу разработки приложений. Программисты, использующие C++, знают о том, что если в C++ забыть вручную удалить размещенные в динамической памяти объекты, может произойти "утечка памяти". На самом деле ликвидация утечек памяти является одним из самых трудоемких (и неинтересных) аспектов программирования на языках, которые не являются управляемыми. Поручив сборщику мусора уничтожение объектов, вы снимаете с себя груз ответственности за управление памятью и перекладываете его на CLR.

Замечание. Если вы имеете опыт разработки программ в использованием COM, то знайте, что объекты .NET не поддерживают счетчик внутренних ссылок, поэтому управляемые объекты не предлагают такие методы, как AddRef() и Release().

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Основные сведения о диаграммах

Из книги Компьютер на 100. Начинаем с Windows Vista автора Зозуля Юрий

Основные сведения о диаграммах Диаграммы служат для представления имеющихся в таблице данных в графическом виде, что позволяет повысить наглядность данных, показать соотношение различных параметров или динамику их изменения. Excel позволяет строить диаграммы различных


Основные сведения о базах данных и программах для их обработки

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Основные сведения о базах данных и программах для их обработки Сегодня компьютеры хранят и обрабатывают значительные объемы информации, начиная от бухгалтерии маленькой фирмы и заканчивая большими информационными системами. Например, на железной дороге тысячи


Основные сведения о запросах

Из книги Основы информатики: Учебник для вузов автора Малинина Лариса Александровна

Основные сведения о запросах Запросы являются одним из основных объектов любой базы данных и используются для отбора данных, расчетов и других операций. Чаще всего используются запросы на выборку, с помощью которых можно выбрать данные из одной или нескольких связанных


Основные сведения об устройствах и драйверах

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Основные сведения об устройствах и драйверах Современный компьютер состоит из большого количества различных устройств, от правильной работы которых зависит его работа в целом. Чтобы операционная система могла использовать устройство, для него необходим драйвер –


Бизнес-ситуация 1.1: основные сведения о компании Jones Novelties Incorporated

Из книги Технологии программирования автора Камаев В А

Бизнес-ситуация 1.1: основные сведения о компании Jones Novelties Incorporated Исполнительный директор компании Брэд Джонс сознает, что для процветания компании нужно автоматизировать большую часть проводимых операций. Джонс понимает, что в первую очередь необходимо реализовать


12.10. Основные сведения об отчетах

Из книги MySQL 5.0. Библиотека программиста автора Гольцман Виктор Иосифович

12.10. Основные сведения об отчетах Отчеты представляют собой наилучшее средство для представления информации из базы данных в виде печатного документа. По сравнению с другими средствами вывода данных на печать отчеты обладают двумя принципиальными


Основные сведения о потоках

Из книги Windows Vista. Для профессионалов автора Клименко Роман Александрович

Основные сведения о потоках В предыдущей главе на рис. 6.1 было показано, каким образом обеспечивается существование потоков в среде процесса. Использование потоков на примере многопоточного сервера, способного обрабатывать запросы одновременно нескольких клиентов,


3.1. ОСНОВНЫЕ СВЕДЕНИЯ

Из книги Защита от хакеров корпоративных сетей автора Автор неизвестен

3.1. ОСНОВНЫЕ СВЕДЕНИЯ Традиционно инженеры стремились, а некоторые из них, не снижая качества проектов, добивались значительного сокращения сроков проектирования. В начале Великой Отечественной войны начальник Центрального артиллерийского конструкторского бюро В.Г.


11.1. ОСНОВНЫЕ СВЕДЕНИЯ

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович


1.2. Основные сведения о реляционных базах данных

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

1.2. Основные сведения о реляционных базах данных Из этого раздела вы узнаете, как устроена реляционная база данных. Вначале мы рассмотрим таблицы, затем ключевые столбцы, связи между таблицами и, наконец, целостность данных в базе.ТаблицыРеляционная база данных


6.1. Основные сведения о службах

Из книги UNIX — универсальная среда программирования автора Пайк Роб

6.1. Основные сведения о службах Служба представляет собой программу, как правило, работающую в фоновом режиме и расширяющую возможности операционной системы. При этом все службы состоят из трех компонентов: собственно файла службы, программы управления службой (SCP) и


Основные сведения о перехвате сеанса

Из книги автора

Основные сведения о перехвате сеанса Лучше всего объяснить перехват сеанса на примере. Представьте, что злоумышленник случайно или в результате успешной для него атаки получил возможность наблюдать за трафиком между двумя машинами. Одна из машин – сервер, который он


Основные сведения о хакинге аппаратных средств

Из книги автора

Основные сведения о хакинге аппаратных средств В зависимости от целей исследователя ответ на вопрос «Что и как он будет исследовать?» может изменяться в очень широких пределах. Как правило, способы осуществления хакинга аппаратных средств определяются его целями:•


Основные сведения

Из книги автора

Основные сведения INF-файлы предназначены для описания начального процесса установки новой программы или оборудования. Каждый INF-файл должен начинаться с заголовка. Этот заголовок определяет версию INF-файла, а также версию операционной системы, для которой этот INF-файл


Глава 8 Основные сведения о сокетах UDP

Из книги автора

Глава 8 Основные сведения о сокетах UDP 8.1. Введение Приложения, использующие TCP и UDP, фундаментально отличаются друг от друга, потому что UDP является ненадежным протоколом дейтаграмм, не ориентированным на установление соединения, и этим принципиально непохож на


2.1 Основные сведения о файлах

Из книги автора

2.1 Основные сведения о файлах Файл представляет собой последовательность байтов. (Байт — небольшая порция информации, обычно размером в восемь бит. Для наших целей можно считать байт синонимом слова "символ".) Никаких ограничений по структуре системой на файл не