.NET er lavet til dette århundrede ikke til det forrige
10 MB er ingenting
det er ikke engang sikkert at dit program bruger den memory - dit program allokerer fra .NET runtime og .NET runtime allokeret fra Windows - .NET allokerer i temmelig store klumper
og lad for guds skyld være med at sætte variable lig null i C# (undtagen under meget specielle omstændigheder) !
.NET bruger ikke reference counting, så objekter kan godt blive GC'et selvom der er noget der har en reference til det
derfor er det i de fleste tilfælde bare forurening af koden at sætte eksplicit til null
undtagelserne er tilfælde a la: - erklær reference til - alloker et meget stort objekt - sæt reference til at pege på det - brug det objekt og bliv færdig med det - fortsæt i meget lang tid hvor reference stadig er i scope
hvor der er en fordel ved at sætte reference til null efter fjerde pind
men den slags tilfælde er ret sjældne i virkelig kode
at sætte lig null er noget som er arvet fra COM, hvor det er vigtigt fordi COM bruger reference counting.
Nu er 10 mb meget, i sær når jeg kigger på avgamsvr.exe min antivurs resident scanner som kun ca. 1 mb.
Også det at ved minimere og åbner mit program et par gange faldr hukommelse forbruge til permant 3,5 mb, det 6,5 mb mindre.
Jeg bruger et XmlDocument objekt hvor jeg indlæser en xml fil, som fylder omkring 60 kb. Jeg har prøvet at bruge strutc, men syntes ikke det hjalp. har også et enkelt sted, efter at formenr er færdig med loade og dne køret start procedurene, prøvet at kaldet System.GC.Collect(2); og også prøvet System.GC.Collect();
jeg synes da ofte man skal sætte noget = null... ellers får man fejlen.. "use of unsigned xxx".. selv om hvis koden følger det korrekte forløb så vil den være signed på det tidspunkt.
eksempel.
MitObjekt blah; bool test; bool koer = true;
if(koer) { blah = new MitObjekt(); test = true; }
if(test) { blah.EnEllerAndenMetode(); // FEJL!! }
men det vil virke hvis man skriver MitObjekt blah = null;
så uanset om vi taler lokal metode eller ej så ville jeg da skrive null i den situation.
men det eksempel du ellers har fundet arne der kan jeg heller ikke se fornuften i at sætte den string = null til sidst.. kan ikke se formålet i det så det er vel logisk nok..
Jeg kan ikke se hvor instans variable (non static fields) skulle være anderledes.
De er klar til GC når det objekt der holder dem ikke kan nåes længere.
Fulstændigt svarende til } for lokale variable.
Eneste grund til at sætte null er igen et noget specielt tilfælde:
man sætter en instans variabel til at pege på et meget stort objekt men skal ikke bruge dette store objekt mere men man skal bruge det holdende objekt længe endnu
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.