Guten Tag,
Ich habe einige Textdateien mit einer Liste von (2-Gramm, Anzahl) Paaren, die durch die Analyse eines Korpus von Zeitungsartikeln gesammelt wurden und die ich in den Speicher laden muss, wenn ich eine bestimmte Anwendung, die ich entwickle, starte. Um diese Paare zu speichern, verwende ich eine Struktur wie die folgende:
private static Dictionary<String, Int64>[] ListaDigramas = new Dictionary<String, Int64>[27];
Die Idee, ein Array von Wörterbüchern zu haben, ist auf Effizienzfragen zurückzuführen, da ich irgendwo gelesen habe, dass ein langes Wörterbuch einen negativen Einfluss auf die Leistung hat. Davon abgesehen wird jedes 2-Gramm in das Wörterbuch aufgenommen, das dem ASCII-Code des ersten Zeichens minus 97 entspricht (oder 26, wenn das erste Zeichen kein Zeichen im Bereich von "a" bis "z" ist).
Wenn ich die (2-Gramm-, Zähl-)Paare in den Speicher lade, nimmt die Anwendung insgesamt 800 MB RAM in Anspruch, und das bleibt so, bis ich ein Programm namens Memory Cleaner verwende, um Speicher freizugeben. Danach sinkt der Speicherbedarf des Programms auf 7 MB bis 100 MB, ohne dass die Funktionalität beeinträchtigt wird (glaube ich).
Gibt es eine Möglichkeit, auf diese Weise Speicher freizugeben, ohne eine externe Anwendung zu verwenden? Ich habe versucht, Folgendes zu verwenden GC.Collect()
aber in diesem Fall funktioniert es nicht.
Ich danke Ihnen vielmals.