Запустил сервис, который работает по циклу. Но появилась проблема, что кол-во потребляемой памяти только растет.
while (!stoppingToken.IsCancellationRequested)
{
var countPayments = db.Payments.Where(a => a.TypePayment == Data.Payments.TypePayment.Activity).Count();
foreach (var payment in checkPayments)
{
var payment = db.Payments.Where(a => a.TypePayment == Data.Payments.TypePayment.Activity).OrderBy(a => a.Id).Skip(i)
.Take(1).Include(a => a.Subscription).Include(a => a.Promocodes).FirstOrDefault();
var telegramUser = db.TelegramUsers.Where(a => a.Id == payment.TelegramUserId).FirstOrDefault();
if (payment == null || telegramUser == null)
continue;
try
{
CheckBlaBla(payment, telegramUser );
}
catch (Exception e)
{
throw e;
}
payment = null;
telegramUser = null;
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
Обычный сервис BackgroundService.
Если принудительно очищаю как ниже все становится вроде хорошо. Но немного не понимаю. Почему после потери ссылки, не удаляются из памяти (как в дебаге, так и в релизе). Какие ограничения можно поставить в конфиге? или только так с этим бороться?
payment = null;
telegramUser = null;
GC.Collect();
GC.WaitForPendingFinalizers();