У меня есть консольное приложение .Net core 2.2, которое использует внутреннее ядро EF для вызовов в БД. Он работает как запланированный сервис, используя topshelf и quartz.net. Я наблюдаю, как использование памяти этой консоли продолжает увеличиваться до тех пор, пока не достигнет 90% ОЗУ сервера, я не знаю, может ли она продолжать занимать больше ОЗУ, чем когда оно достигает этого запаса, я обычно выключаю его и перезапускаю снова.
Я не могу поделиться кодом здесь, так как проект обширный и не могу сузить, что может вызвать это. Хотя я проверил код достаточно, и в коде нет ничего, что могло бы сделатьприложение продолжает удерживать старые памяти / объекты.
Я также проверил файл дампа, используя один из инструментов анализа дампа, и выяснил, что около 50% памяти используется строковыми значениями (которые быстро теряют объем, но являются большими данными)и для отдыха;большая часть памяти используется ядром EF (если быть точным, измените трекер). Я делаю большое создание json в цикле для списка строк БД, но все это должно быть когда-нибудь освобождено / собрано, поскольку все они являются частью списка управляемых объектов, и цикл быстро теряет свою область видимости.
Кто-нибудь сталкивался с подобной проблемой, когда в запланированном приложении .net core 2.2 приложение GC не запускается или память вообще не освобождается, если оставить ее для работы на несколько дней, учитывая, что код выглядит нормально для утечки памяти.