Итак, спасибо @Lass V. Karlsen за то, что он указал мне правильное направление с этим комментарием: Что на самом деле делает кнопка «Force G C» в Visual Studio Performance Profiler?
Это было совершенно очевидно, когда я об этом думал.
Мой Page
избавлялся от самого себя и в Dispose
методе I я вызывал:
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
и, конечно, потому что в тот момент страница еще была жива и не собирала мусор.
Вместо этого я решил сделать следующее:
#if DEBUG
Task.Run(async () =>
{
await Task.Delay(500);
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
});
#endif
Обратите внимание, что я обернул ее DEBUG
директива компилятора, так как я не думаю, что это рекомендуемый способ сделать это, но с целью выявления утечек памяти это работает хорошо