Освобождение памяти в DotNet, Рефлексия и недостатки DotNet

Освобождение памяти

Среда CLR имеет дело с управляемыми ресурсами, а так же в ней могут использоваться и неуправляемые ресурсы. С управлением управляемым кодом среда CLR справляется сама: сама освобождает и выделяет память и т.п. с помощью сборщика мусора. (идея с WinNT сборщик мусора по времени опрашивал.) Фактически если, создан класс, то не надо его уничтожать. Когда сборщик мусора приступает к работе, он обращается к внутренним таблицам, созданным джит-компилятором. В этих таблицах хранятся ссылки на объекты, называемые корнями Roots. Они говорят о том что есть ещё объекты, на которые указывают эти ссылки и удалять их пока не надо. При этом сборщик мусора строит свою собственную структуру и контролирует корни объектов. Как только связь нарушается, т.к. нет ссылки на другой объект, «работает» сборщик мусора. Используется алгоритм поколений Generational Algorithm.

Необходимость программного вызова сборщика мусора маловероятна, методы для принудительного вызова существуют. Неуправляемые ресурсы надо освобождать в явном виде. Для этого есть специальные методы и надо составлять приложения соответствующим образом: деструктор должен иметь имя Destroy, директиву Override, не должен иметь параметров и должен реализовать интерфейс IDisposable.

Рефлексия

Аналог в Delphi RTTI. Рефлексия – технология, позволяющая среде ДН получать сведения о метаданных типов и классов. Отличие от RTTI: возможности рефлексии больше(с помощью рефлексии можно создавать экземпляры различных классов, вызвать их методы, получать и устанавливать значения элементов, добавлять динамически типы в сборки и т.п.) Есть утилита reflector, которая позволяет с рефлексией работать.

Недостатки DotNet

1. Громоздкая архитектура (нельзя прийти с приложением DotNet прийти куда-нибудь и запустить, нужна установка этой среды)
2. Необходимость компиляции в машинный код замедляет выполнение.
3. Код на IL является не безопасным с точки зрения подделок. Любая незашифрованная сборка может модифицирована кем угодно.


Комментарии запрещены.





Статистика

Рейтинг@Mail.ru