Memory Leak in C#?
Verfasst: Mi Feb 18, 2015 5:32 pm
Hallo alle zusammen, momentan habe ich Semesterferien und da habe ich entschlossen eine Programm für meine Zwecke zu schreiben.
Werden soll es ein Lesezeichen Manager ich werde ihn wenn ich mit der Entwicklung weiter bin auch unter Projekte vorstellen.
Wo ich momentan noch Schwierigkeiten habe ist das Datenmanagement, wenn ich meine Klassen mal erzeugt habe möchte ich sie nicht überall im Programm rumkopieren
sondern alle schön von der Hauptklasse schön zugreifen über referenzen.
Ich habe ein wenig rumprobiert und zwar habe ich eine Klasse Organizer da habe ich testweise mal Daten reingeschrieben.
Die Struktur ist dabei folgende BaseTree -> SubTree -> Entry
In der MainForm erzeuge ich die Klasse
Um zu testen wie sich die Referenz verhält, übergebe ich die Klasse bei Erzeugung einer anderen wenn ich auf einen Button klicke:
Im Taskmanager sehe ich dann die Arbeitsspeicherbelastung, und das komische dabei ist, wenn ich immer wieder drauf klicke erhöht sich die Arbeisspeicherzuweisung immer wieder.
Das habe ich mal auskommentiert und das Verhalten ist immer noch das selbe.
Komisch, vielleicht weiß der eine oder der andere was ich falsch gemacht habe bzw. was mit meinem Programm nicht stimmt.
Das Programm wird unter SharpDevelop entwickelt .Net 4.0
Werden soll es ein Lesezeichen Manager ich werde ihn wenn ich mit der Entwicklung weiter bin auch unter Projekte vorstellen.
Wo ich momentan noch Schwierigkeiten habe ist das Datenmanagement, wenn ich meine Klassen mal erzeugt habe möchte ich sie nicht überall im Programm rumkopieren
sondern alle schön von der Hauptklasse schön zugreifen über referenzen.
Ich habe ein wenig rumprobiert und zwar habe ich eine Klasse Organizer da habe ich testweise mal Daten reingeschrieben.
Code: Alles auswählen
public class Organizer
{
public List<BaseTree> Tree{get; private set;}
public Organizer(string import, bool isCreated=true)
{
Tree = new List<BaseTree>();
Tree.Add(new BaseTree("asdflsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("zsuilsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("lsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("uzilsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("klsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("jlsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("hlsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("dflsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("gflsdkfjsdlkfgjfkljkljsdf"));
Tree.Add(new BaseTree("hlsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("jhlsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("llkjsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("llsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("ölsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("hjklsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("gjhlsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("ghjlsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("ertlsdkfjsdlkjfkljkljsdf"));
Tree.Add(new BaseTree("ertlsdkfjsdlkjfkljkljsdf"));
Tree[0].SubTrees.Add(new SubTree("wefghklsdfjilfgnkl"));
Tree[0].SubTrees.Add(new SubTree("tzfghklsdfjilfgnkl"));
Tree[0].SubTrees.Add(new SubTree("fghklsdfjilfgnkl"));
Tree[0].SubTrees.Add(new SubTree("fgfghklsdfjilfgnkl"));
Tree[0].SubTrees.Add(new SubTree("sdfghklsdfjilfgnkl"));
Tree[0].SubTrees.Add(new SubTree("ertfghklsdfjilfgnkl"));
Tree[0].SubTrees.Add(new SubTree("qwghklsdfjilfgnkl"));
Tree[0].SubTrees.Add(new SubTree("fgfghklsdfjilfgnkl"));
Tree[0].SubTrees[0].addEntry(new Entry("sdfkjflgdfgjdflkgjlkjfldgjlkfj"));
Tree[0].SubTrees[0].addEntry(new Entry("sdfkjflgdfgjdflkgjlkjfldgjlkfj"));
Tree[0].SubTrees[0].addEntry(new Entry("sdfkjflgdfgjdflkgjlkjfldgjlkfj"));
Tree[0].SubTrees[0].addEntry(new Entry("sdfkjflgdfgjdflkgjlkjfldgjlkfj"));
Tree[0].SubTrees[0].addEntry(new Entry("sdfkjflgdfgjdflkgjlkjfldgjlkfj"));
Tree[0].SubTrees[0].addEntry(new Entry("sdfkjflgdfgjdflkgjlkjfldgjlkfj"));
Tree[0].SubTrees[0].addEntry(new Entry("sdfkjflgdfgjdflkgjlkjfldgjlkfj"));
Tree[0].SubTrees[0].addEntry(new Entry("sdfkjflgdfgjdflkgjlkjfldgjlkfj"));
Tree[0].SubTrees[0].addEntry(new Entry("sdfkjflgdfgjdflkgjlkjfldgjlkfj"));
Tree[0].SubTrees[0].addEntry(new Entry("sdfkjflgdfgjdflkgjlkjfldgjlkfj"));
Tree[0].SubTrees[0].addEntry(new Entry("sdfkjflgdfgjdflkgjlkjfldgjlkfj"));
Tree[0].SubTrees[0].addEntry(new Entry("sdfkjflgdfgjdflkgjlkjfldgjlkfj"));
Tree[0].SubTrees[0].addEntry(new Entry("sdfkjflgdfgjdflkgjlkjfldgjlkfj"));
Tree[1].SubTrees.Add(new SubTree("fghfghklsuidfjilfgnkl"));
Tree[1].SubTrees.Add(new SubTree("fghjghkhgjlsdfjilfgnkl"));
Tree[1].SubTrees.Add(new SubTree("fghsdklsdfjitzulfgnkl"));
Tree[1].SubTrees.Add(new SubTree("wefghklsdfjilfgnkl"));
Tree[1].SubTrees.Add(new SubTree("fghklsdfhjjilfgnkl"));
Tree[1].SubTrees.Add(new SubTree("sffghklsdfjilfgnkl"));
Tree[1].SubTrees.Add(new SubTree("uzfghklsiudfrtzjilfgnkl"));
Tree[1].SubTrees.Add(new SubTree("tzfghklsdfjhjilfgnkl"));
}
}
In der MainForm erzeuge ich die Klasse
Code: Alles auswählen
Organizer organ = new Organizer("Test");
Code: Alles auswählen
void SearchButtonClick(object sender, EventArgs e)
{
//File file = new File(ref organ);
}
Das habe ich mal auskommentiert und das Verhalten ist immer noch das selbe.
Komisch, vielleicht weiß der eine oder der andere was ich falsch gemacht habe bzw. was mit meinem Programm nicht stimmt.
Das Programm wird unter SharpDevelop entwickelt .Net 4.0