Я создал основное приложение dotnet. Приложение работает на MacOS и Linux. Я хотел контролировать использование памяти моего приложения. Поэтому я выполняю свой код для нескольких итераций и проверяю Process.GetCurrentProcess (). WorkingSet64 в конце каждой итерации. В коде используются только некоторые структуры данных List, для которых в конце обработки установлено значение null, чтобы сообщить GC, что объект доступен для сборки мусора. Существует также вызов функции pinvoke для C DLL, но код C не выполняет выделения malloc.
Я заметил, что значение размера рабочего набора увеличивается после каждой итерации. Даже размер резидентного набора RSS также увеличивается. Я не вижу возможности утечки памяти в моем коде. Даже если я явно вызываю GC.Collect (), значения все равно увеличиваются в каждой итерации. Может кто-нибудь подсказать возможные причины такого поведения.