Gå til innhold

Garbage Collector i Java


Anbefalte innlegg

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
Videoannonse
Annonse

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 frigjøres med en gang.

Endret av MailMan13
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...