Вы должны рассмотреть много элементов здесь. Я сомневаюсь, что универсальный сборщик мусора очищает память, когда связывает ее - это было бы пустой тратой времени. Это плюс сборщик мусора, как правило, не O (N). Сборка мусора обычно имеет несколько подпрограмм, которые она будет запускать - самая простая из упомянутых здесь будет сжатие, само сжатие основано на статистике распределения выделенной памяти. Другие фазы будут иметь аналогичные сложности ..
- редактировать после комментариев ниже и в вопросе -
Выбранный вами ответ не приближает вас к этому ощущению - на самом деле он полностью вводит в заблуждение - поскольку он не повторяется по структуре данных в памяти. Это просто грубая очистка памяти, которая не является задачей сборщика мусора.
Более точный ответ
Если вы хотите по-настоящему почувствовать сборщик мусора, я предлагаю написать приложение .NET или Java и инициализировать гигабайт памяти с различными размерами объектов, а затем случайным образом отбрасывать 100-300 МБ объектов и затем воссоздавать их опять случайных размеров; Сделайте это за несколько проходов, чтобы все перемешать. Следуйте этому, отключив сборщик, сбросив количество объектов и затем принудительно собрав ручные коллекции; Последняя коллекция мануалов - это то, что вы хотите сравнить - и вы хотите сделать это примерно 100 раз и построить результат.
Примечание о 20 мс
Я уверен, что есть способы заставить коллектора вести себя в режиме реального времени, если вы этого хотите. Сборщик не должен выполнять полную очистку, он может быть записан для выполнения в виде набора атомарных операций, и вы можете отключить этап сбора в режиме реального времени - то есть, 20 мс. В этом случае он сделал бы частичную коллекцию, которая все еще была бы полезна.
Вы должны будете скорректировать упомянутую мной стратегию, чтобы измерить, сколько можно сделать за 20 мс. Обязательно поймите, что количество собранных вещей больше зависит от количества присутствующих объектов, а не от их размера. Поэтому я предлагаю захватить оба значения, если вы решите официально протестировать GC.