Инкрементное использование памяти WorkerService

#c# #.net #.net-core #worker-service

Вопрос:

Я пишу один планировщик, который работает все время. Он проверяет базу данных каждые 15 минут и обрабатывает, есть ли какие-либо данные для обработки. Это проект .net core 3.1 WorkerService. Я сталкиваюсь с проблемой, что память, используемая планировщиком, увеличивается с течением времени (более 1000 МБ в день). Ниже приведен пример кода (так как я не могу опубликовать здесь фактический код), который также имеет аналогичную проблему.

Рабочий класс

Класс TestBAL

Начальное потребление памяти составило около 15,2 Мб

введите описание изображения здесь

Через 5 минут он увеличился до 16,2 Мб

введите описание изображения здесь

Может ли кто-нибудь, пожалуйста, помочь мне понять, почему накапливается память и как я могу решить эту проблему?

Комментарии:

1. Даже если вы позволите этому коду работать, скажем, в течение часа, я очень сомневаюсь, что вы увидите, как что-то сильно увеличится. Это связано с тем, что этот «пример кода» генерирует только локальный, собираемый мусор-первоначально объем памяти будет увеличиваться по мере ввода в эксплуатацию новых сегментов, но в конечном итоге это прекратится. Это почти наверняка совсем не сравнимо с тем, что делает ваша служба, которая потребляет 1 ГБ в день, поскольку это похоже на настоящую утечку памяти (при условии, что ей не требуется 1 ГБ для регулярной обработки). Другими словами, я боюсь, что это игрушечный пример, который чрезмерно упрощен и не показывает вашу реальную проблему.