Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
17 / 17 / 3
Регистрация: 09.12.2011
Сообщений: 64

Загадка про сборщик мусора

04.11.2013, 01:14. Показов 2695. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Однажды мне в голову пришла такая идея, и решил спросить мнения у опытных людей. Итак, логика сборщика мусора гласит: если в управляемой куче есть объект, на который не указывает ни одна переменная в коде, то этот объект должен быть удалён. Вроде бы логично. Но вот вам ситуация:
C#
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
26
        class Girl
        {
            public Boy boy;
        }
        class Boy
        {
            public Girl girl;
        }
        public static void Result()
        {
            Boy boy = new Boy();
            Girl girl = new Girl();
 
            boy.girl = girl;
            girl.boy = boy;
 
            return;
        }
        static void Main(string[] args)
        {
            while (true)
            {
                Result();
                GC.Collect(); //Глобальный запуск сборщика мусора.
            }
        }
После выполнения функции Result получется такая ситуация: к переменной boy и girl мы болше не имеем доступа, НО оба этих объекта хранят друг в друге ссылки на друг друга. Собственно загадка, удалит ли их сборщик муссора, и не кончится ли через часок другой память.
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.11.2013, 01:14
Ответы с готовыми решениями:

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

Существует ли в C# сборщик мусора
Подскажите пожалуйста, а когда мы создаем экземпляр формы, его надо потом как то уничтожать при закрытии моего приложения? если да то как...

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

2
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
04.11.2013, 02:08
Сборщик строит граф объектов в куче и способен обнаруживать циклические ссылки. Обратно, вы можете создавать ссылки (слабые ссылки), которые не будут учитываться сборщиком мусора, для этого используется класс WeakReference.
2
 Аватар для ksk
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
04.11.2013, 10:43
Не кончится. Память, выделяемая под объекты, область видимости которых ограничена методом, и ссылки на которые не выходят за пределы метода, должна оставаться в 0м поколении и повторно раздаваться мусоркой при одном из следующих обращений к ней из оператора new.
По поводу циклических ссылок, как тут уже правильно сказали, - так просто мусорку не обманешь. Она не первый год работает.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.11.2013, 10:43
Помогаю со студенческими работами здесь

Рациональное использование памяти, сборщик мусора
Задача определить такую структуру данных: Entity - Мешок для компонентов. Есть массив фиксированных компонентов. Это означает, что эти...

Что происходит с внешними переменными, если объект, создающий новый поток, удалит сборщик мусора
Здравствуйте! Недавно поймал себя на одной мысли. Что происходит с внешними переменными, если объект, создающий новый поток, удалит...

Стоит ли очищать память от класса MySQL или сборщик мусора всё сделает сам
В процессе написания использую /NET Connector и MySQL. Пишу функцию public static void SaveNavigationNode(TreeNode treeNode) ...

Отписка от события, сборщик мусора
MyObject obj1 = new MyObject("hello"); obj1 += new SomeEvent(); // ... // пользуюсь им некоторое время // ... obj1 = new...

Сборщик мусора очищает лист
Всем привет. Загружаю файл с компьютера в List<string>. Считаю количество элементов в листе, выполняю ещё несколько операций, потом жму...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru