Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Число ссылок на объект

842
28 февраля 2009 года
sigmov
301 / / 16.09.2008
Как известно CLR чистит память, если число ссылок на объект который в ней находится становится = 0(!)

У меня же задача - вывести число ссылок на объект в текущий момент.
1) В текущей программе
2) Всего в среде CLR

Например
Код:
class CLASS
        {
            public CLASS() { }
        }

        unsafe static void Main(string[] args)
        {
            CLASS F = new CLASS();
            Console.WriteLine(RefCount(F));
            CLASS C = F;
            Console.WriteLine(RefCount(F));
            C = null;
            Console.WriteLine(RefCount(F));
        }

Результаты:
1
2
1

Кто нить знает как это сделать?
5
28 февраля 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: sigmov
У меня же задача - вывести число ссылок на объект в текущий момент.

Кто нить знает как это сделать?

Написать собственный GC.

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

842
01 марта 2009 года
sigmov
301 / / 16.09.2008
Цитата: hardcase
Написать собственный GC.


Собственный сборщик мусора? - шутить изволите!
Тогда уж проще написать собственный Object добавив в него учет ссылок :)

5
01 марта 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: sigmov
Собственный сборщик мусора? - шутить изволите!
Тогда уж проще написать собственный Object добавив в него учет ссылок :)

Учет ссылок - слишком накладная операция, и в общем случае не может поддерживаться при условии сохранения возможности работы с небезопасным кодом.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог