Jeg har nogle objekter, som jeg gerne vil have min garbage-collector skal tage sig af - er det nok abre at markere disse som null, eller hvad?
Ligeledes, hvis jeg har en class med nogle objekter og typer, hvordan kan jeg så sørge for, at når klasses nu ryger gennem garbage-collectoren, så ryger de objekter der bruges i den også? Er det nok bare at null'e objekterne i destructoren?
Eller er det bedre at implemtere IDispose, og sørge for at garbage-collectoren ikke får noget at sige?
IDispose bruges når du også skal have ryddet op i unmanaged resourcer. F.eks. hvis din klasse har COM-porten åben eller har et handle til din database eller sådan noget.
Problemet er bare at min .Net memory profiler siger noget andet - nemlig at ved en gen2-collect bliver alle ting ikke taget med, samt der er en svag løbende stigning i hukommelses-forbruget... men det er ikke det det går ud på lige nu :)
Jeg går ud fra at alle .Net-ressourcer er managed - eller tager jeg fejl - og hvad med arrays og types - hvordan fanger jeg dem - som managed eller unmanaged?
Det er på ingen måde nødvendigt at null'e - hvis dine klasser går ud af scope collectes de. Jeg synes at det er pæn programmeringsskik; Ved at null'e viser man at man har gjort sig klart at man ikke skal bruge instansen mere. Men det er ultimativt et spørgsmål om smag-og-behag.
Nej, int (altså System.Int32) kan ikke null'es. Den nedarver nemlig fra System.ValueType.
og jeg vil bestemt fraråde at sidde og null'e alt muligt: det giver flere linier kode og det er mere sandsyneligt at det forværrer performance end det forbedrer
wow, still open ... søgte lige på profiler og fandt den her tråd :-)
og nogle andre ... tror ANTS profiler bliver mit svar til mig selv.
// ouT
Synes godt om
Ny brugerNybegynder
Din løsning...
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.