UWP: сборка мусора Gen 2 по-прежнему происходит внутри NoGCRegion - PullRequest
0 голосов
/ 11 апреля 2020

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

Итак, я вызываю

const long TOTAL_GC_ALLOWED = 1024L * 1024 * 240; // 240 MB, it seems max allowed is 244 for Workstations 64 bits
    try
    {
        bool res = GC.TryStartNoGCRegion(TOTAL_GC_ALLOWED);
        if (!res)
            s_log.ErrorFormat("Cannot allocate noGC Region!");
    }
    catch (Exception)
    {
        s_log.WarnFormat("Cannot start NoGCRegion");
    }

К сожалению, даже если метод GC.TryStartNoGCRegion() возвращает true, я все равно вижу то же количество GarbageCollection Gen 2, что и в случае, когда я не вызываю этот метод.

Обратите также внимание, что я пытаюсь использовать машину с 16 ГБ ОЗУ, из которых только 9 ГБ используются всей ОС, когда я проводил тесты.

Что я делаю не так?

Как мне добиться подавить G C (на ограниченное количество времени)?

...