dagatle Skrevet 27. oktober 2003 Del Skrevet 27. oktober 2003 Jeg er vant til at jeg kan kjøre destruktøren på pekere jeg ikke benytter lengre i c++ og jeg får frigitt minne. Nå sitter jeg og jobber i java og forlesern har fortalt at garbageCollectoren skal rydde opp i dette. Om jeg tidlig i et program har et object som er på 10Mb (2D array), noen linjer lengre ned trenger jeg ikke dette arrayet lengre og kunne da tenke meg å frigitt minnet Hva gjør jeg da ? har funnet System.gc(); Men det ser ikke ut til å gjøre noen forskjell. Må jeg vente før dette trer i kraft eller finnes det metoder å fremskynde det på ? Lenke til kommentar
MailMan13 Skrevet 27. oktober 2003 Del Skrevet 27. oktober 2003 (endret) Du setter referansen til null (i java kaller man det ofte objekt-referanser siden man ikke har mange av de 'farlige' mekanismene på dem som man har på pekere i c/c++) Hver objekt har en referanse-teller i seg som holder rede på hvor mange referanser det finnes til objektet, garbage-collector vil sjekke denne hver gang den kjører og frigjøre objekter som har 0 referanser, det holder altså å 'slippe' referansen til objektet, enten ved å sette den lik null eller et annet objekt (arrays er objekter i java) før garbage-collector kjøres. gc kjøres periodisk av jvm, så du slipper i utgangspunktet å gjøre det selv, med mindre det er snakk om svære objekter som må frigjøres med en gang. Endret 27. oktober 2003 av MailMan13 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå