Я изучал возможность того, что одно из моих приложений может иметь утечку памяти, поэтому начал играть с некоторыми очень базовыми образцами кода. Один из них, с которым я закончил, со временем значительно увеличился с точки зрения количества ручек (> 3000). Это очень простое консольное приложение с кодом следующим образом:C# Handles Count
public static void Main(string[] args)
{
using (SqlConnection sqlConnection = new SqlConnection())
{
}
Console.ReadLine();
}
Достав вызов SqlConnection удаляет любое увеличение Handle, таким образом, я предполагаю, что это имеет какое-то отношение пула соединений. Но поскольку это только запускается один раз, прежде чем в основном идти в ожидании ввода, почему счет Handle продолжает расти?
Спасибо.
Как вы проверяете количество ручек? – tia
Я использую Task Manger, а также Process Explorer (sysinternals). –
a Утечка памяти возникает, когда программа резервирует память для собственного использования и не освобождается при завершении работы или превышает ее собственную квоту памяти и записывает ее в блок, используемый другим процессом, операционная система должна предотвращать вторую и структура предотвращает первый так, если вы не используете маршал для распределения памяти вручную и не очищаете последующие утечки памяти, вероятно, не будет проблемой. – MikeT