На самом деле ничто в машине действительно не знает, что ожидает сборки мусора: сборка мусора - это как раз процесс выяснения этого и освобождения памяти, соответствующей мертвым объектам. В лучшем случае GC будет иметь эту информацию только о некоторых очень специфических моментах в своем цикле. Части обнаружения и выпуска часто чередуются (это зависит от технологии GC), поэтому возможно, что GC никогда не будет иметь полного подсчета того, что может быть освобождено.
Для большинства GC получение такой информации требует больших вычислительных ресурсов. Если вы готовы потратить немного процессорного времени на него (оно не будет прозрачным для приложения), то вы можете использовать GC.Collect()
, чтобы принудительно запустить GC, после чего сразу же следует вызов GC.GetTotalMemory()
, чтобы узнать, сколько память пережила ГК. Обратите внимание, что форсирование GC может вызвать заметную паузу, а также может снизить общую производительность.
Это «самодельный» метод; для более серьезного анализа попробуйте специальный профилировщик.