Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Сборка мусора в среде .NET. Построение графа достижимых объектов.

Читайте также:
  1. V2:Профилактика девиантного поведения в молодежной среде. Социально-педагогическая работа с неформальными молодежными группами и объединениями
  2. Актуальность самостоятельных занятий физическими упражнениями для студентов. Формы, организация, построение самостоятельных занятий.
  3. Анализ кинематографической фиксации архитектуры Петербурга на примере нескольких объектов.
  4. Асинхронные операции в среде .NET. Асинхронный вызов делегатов.
  5. Биология как наука, ее достижения, связи с другими науками. Методы изучения живых объектов. Роль биологии в жизни и практической деятельности человека.
  6. Бібліяграфазнаўства як сістэма навуковых ведаў.
  7. Взаимодействие управляемого и неуправляемого кода в среде .NET на примере вызова функций Windows API.
  8. Вопрос 88 понятие и состав земель водного фонда. Виды водных объектов. Право собственности на водные объекты.
  9. Градуировка осей осциллографа.
  10. Делегаты в среде .NET и механизм их работы.

Сборка мусора - это механизм, позволяющий компьютеру определить, когда объект более недоступен. Тогда он автоматически освобождает память, используемую этим объектом (вызывая функцию finalizer, реализованную пользователем). Некоторые сборщики мусора (в т.ч. используемый в.NET), "сжимают" память, уменьшая количество ресурсов, используемых вашей программой. До настоящего времени на платформе Windows использовалось две технологии освобождения памяти, выделенной системой по динамическим запросам:

Возложение этой задачи на код приложения.

Поддержка счетчиков ссылок на обьекты.

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

Хотя современные среды разработки представляют инструменты, помогающие обнаружить такие утечки, все же они пропускают ошибки, которые очень трудно отследить, поскольку они никак не проявляются до тех пор, пока не утечет так много памяти, что Windows откажет процессу в выделенной новой. И в такой момент весь компьютер начнет заметно "тормозить" при каждом обращении памяти.

Вместо всего этого.NET полагаеся на сборщик мусора. Это программа, предназначенная для того, чтобы очищать память. Идея состоит в том, что вся динамически выделяемая память распределяется в области кучи (это верно для всех языков, хотя в случае.NET CLR поддерживает свою собственную управляемую кучу для использования приложениями.NET). Всякий раз когда.NET обнаруживает, что управляемая куча данного процесса заполнилась и нуждается в приведении в порядок, он вызывает сборщик мусора. Этот сборщик мусора проходит по всем переменным, находящимся в контексте вашего кода, и проверяет ссылки на обьекты, расположенные в области кучи, чтобы идентифицировать, какие из них доступны из кода, то есть, чтобы узнать, на какие обьекты существуют ссылки. Любой обьект с отсутствием ссылок рассматривается как такой, к которому больше не будет осуществляться доступ из кода, потому обьект может быть удален.

Механизм сборки мусора невозможно применить с таким языком, как например неуправляемый С++, потому что С++ допускает свободное приведение указателей к другим типам.

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

 




Дата добавления: 2015-01-30; просмотров: 120 | Поможем написать вашу работу | Нарушение авторских прав

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | <== 10 ==> | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.123 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав