Ich habe nach der Möglichkeit gesucht, dass eine meiner Anwendungen ein Speicherleck haben könnte, also habe ich angefangen mit ein paar sehr einfachen Code Samples zu spielen. Eines, mit dem ich am Ende war, begann sich im Hinblick auf die Anzahl der Griffe (> 3000) stark zu erhöhen. Es ist eine sehr einfache Konsolenanwendung mit dem Code wie folgt:C# Handles Count
public static void Main(string[] args)
{
using (SqlConnection sqlConnection = new SqlConnection())
{
}
Console.ReadLine();
}
den SqlConnection Anruf herausnehmen entfernt alle Griffe zu erhöhen, so dass ich davon aus, es etwas mit dem Verbindungspool zu tun hat. Aber da dies nur einmal abläuft, bevor man auf die Eingabe wartet, warum steigt die Handle-Zahl weiter an?
Danke.
Wie überprüfen Sie die Handleanzahl? – tia
Ich benutze Task-Manager und auch Process Explorer (sysinternals). –
ein Speicherverlust wird verursacht, wenn ein Programm Speicher für die eigene Verwendung reserviert und beim Herunterfahren nicht freigegeben wird oder das eigene Speicherkontingent überschreitet und in einen Block schreibt, der von einem anderen Prozess verwendet wird, sollte das Betriebssystem das zweite und das andere verhindern Das Framework verhindert die erste, es sei denn, Sie Marshal verwenden, um Speicher manuell zuzuordnen und nicht danach aufräumen Speicherverluste sind wahrscheinlich nicht das Problem – MikeT