|
Account accountl. Объект Account недоступен accountl = null
2. Переменной, хранящей единственную ссылку на объект, присваивается другая ссылка, и объектстановится недоступным. accountl = new Account(); account2 = new Account(); accountl = account2; Рассмотрим этот вариант графически:
accountl = new Account(); account2 = new Account();
accountl = account2;
3. Если объект А содержит единственную ссылку на объект В, то когда А становится недоступным, то же самое происходит с В. В программе переменной banklприсваивается ссылка на новый объект Bank,Этот объект содержит ссылку на объект Account,присвоенную методом SetAccount. После выполнения строки bankl = null объект bankl больше не ссылается на объект Bank, и, значит, объект Account также становится недоступным. Если объект Account ссылался на другой объект, а тот, в свою очередь, на третий и т. д., то цепочка объектов, связанных с помощью ссылок, будет доступна до тех пор, пока доступен первый объект.
bankl = new Bank();
bankl.SetAccount(new Account());
bankl = null;
Рассмотрим основные задачи сборщика мусора. Для освобождения памяти от недоступных более объектов в языке С# используется механизм, поддерживаемый средой исполнения .NET и называемый сборщиком мусора (СМ). Методика автоматического управления памятью называется сборкой мусора (СМ). Сборщик мусора выполняет две основные функции: · обнаружение недоступных объектов; · восстановление занимаемой ими памяти. Рассмотрим основные принципы СМ. 1. Механизм CM .NET-платформы не удаляет доступные объекты. 2. СМ .NET-платформы, автоматически обнаруживает и удаляет все недоступные объекты. Поэтому не следует беспокоиться о запуске или прекращении работы этой системы. 3. Недоступный объект не удаляется сразу. Когда СМ работает, он занимает время процессора, которое могло бы быть потрачено на выполнение программы, что приводит к ее временному "замораживанию". Поэтому сборщик мусора должен найти баланс между освобождением памяти для новых объектов и минимальным использованием ресурсов процессора.
Сборщик мусора существует не во всех объектно-ориентированных языках программирования. Например, в языке C++ программист сам должен создать исходный код, обнаруживающий, когда объект становится не нужным, и запускающий специальный метод, называемый деструктором, для освобождения соответствующего блока памяти. Деструктор запускается сразу же после вызова, причем в нем могут содержаться команды освобождения и других ресурсов (файлов, сетевых соединений и т. д.). Следовательно, программирующий на C++ достаточно жестко управляет тем, когда объект освобождает память и другие ресурсы. О6ъявленив_двструктора::= <Идентификатор_деструктора>() { <Операторы> }
Примечание 1. <Идентификатор_деструктора> подобно конструктору должен совпадать с идентификатором класса. 2. Деструктор не имеет формальных параметров. Просмотров: 960 Вернуться в категорию: Животные |
© 2013-2023 cozyhomestead.ru - При использовании материала "Удобная усадьба", должна быть "живая" ссылка на cozyhomestead.ru.
|