ich habe ein Problem in Wörterbuch Entsorgung KlasseProblem Entsorgung Klasse in Wörterbuch es ist immer noch in den Speicherhaufen obwohl GC.Collect mit
dies ist mein Code
private Dictionary<string, MyProcessor> Processors = new Dictionary<string, MyProcessor>();
private void button1_Click(object sender, EventArgs e)
{
if (!Processors.ContainsKey(textBox1.Text))
{
Processors.Add(textBox1.Text, new MyProcessor());
}
}
private void button2_Click(object sender, EventArgs e)
{
MyProcessor currnt_processor = Processors[textBox2.Text];
Processors.Remove(textBox2.Text);
currnt_processor.Dispose();
currnt_processor = null;
GC.Collect();
GC.WaitForFullGCComplete();
}
public class MyProcessor: IDisposable
{
private bool isDisposed = false;
string x = "";
public MyProcessor()
{
for (int i = 0; i < 20000; i++)
{
//this line only to increase the memory usage to know if the class is dispose or not
x = x + "gggggggggggg";
}
}
public void Dispose()
{
x=null;
this.Dispose(true);
GC.SuppressFinalize(this);
}
public void Dispose(bool disposing)
{
if (!this.isDisposed)
{
isDisposed = true;
this.Dispose();
}
}
~MyProcessor()
{
Dispose(false);
}
}
i "ANTS Memory Profiler" verwenden überwachen nur Heap-Speicher
die Entsorgung der Arbeit, wenn ich alle Schlüssel aus Wörterbuch entfernen
wie kann ich die Klasse von Heap-Speicher zu zerstören?
dies ein Video-Link für das Problem
http://www.youtube.com/watch?v=ePorlksv2QY
Dank im Voraus
Warum rufen Sie 'this.Dispose' im Konstruktor an? –
Dieser Code macht keinen Sinn. Was hat die Entsorgung damit zu tun? Kannst du erklären, warum du denkst, dass eine dispose-Methode einen Unterschied für das * Memory * -Management darstellt? Sind Sie unter dem falschen Glauben, dass Dispose für die Verwaltung von Speicher ist? –
dies eine Videoverbindung für das Problem http://www.youtube.com/watch?v=ePorlksv2QY – bebo