#c# #.net #.net-core #worker-service
Вопрос:
Я пишу один планировщик, который работает все время. Он проверяет базу данных каждые 15 минут и обрабатывает, есть ли какие-либо данные для обработки. Это проект .net core 3.1 WorkerService. Я сталкиваюсь с проблемой, что память, используемая планировщиком, увеличивается с течением времени (более 1000 МБ в день). Ниже приведен пример кода (так как я не могу опубликовать здесь фактический код), который также имеет аналогичную проблему.
Начальное потребление памяти составило около 15,2 Мб
Через 5 минут он увеличился до 16,2 Мб
Может ли кто-нибудь, пожалуйста, помочь мне понять, почему накапливается память и как я могу решить эту проблему?
Комментарии:
1. Даже если вы позволите этому коду работать, скажем, в течение часа, я очень сомневаюсь, что вы увидите, как что-то сильно увеличится. Это связано с тем, что этот «пример кода» генерирует только локальный, собираемый мусор-первоначально объем памяти будет увеличиваться по мере ввода в эксплуатацию новых сегментов, но в конечном итоге это прекратится. Это почти наверняка совсем не сравнимо с тем, что делает ваша служба, которая потребляет 1 ГБ в день, поскольку это похоже на настоящую утечку памяти (при условии, что ей не требуется 1 ГБ для регулярной обработки). Другими словами, я боюсь, что это игрушечный пример, который чрезмерно упрощен и не показывает вашу реальную проблему.