Thread Previous • Date Previous • Date Next • Thread Next |
Jon Bendtsen wrote:
Den 28. jul 2004, kl. 1:36, skrev Kristian Duus Østergaard:Jo men en memoryleak er jo netop at programmet bliver ved med at allokere RAM uden at release noget. I Java er det meget nemt i det man bare kan sætte objectet til null så klarer Garbage Collectoren resten. I fx. C skal man selv huske at release den memory man har brugt.Det er jo ikke GC hvis at man i java manuelt skal sætte objektet til null. Det ville være GC hvis java opdagede at man ikke bruger et objekt mere, og derfor nedlægger det.
Det gør java også. Definitionen på hvornår du ikke bruger et objekt er blot når ingen levende tråd længere direkte eller indirekte har en referencen til objektet.
F.eks.: Map foo = new HashMap(); foo.put("bar1",new Object()); foo.put("bar2",new Object()); // på dette punkt i programmet er der 3 objekter: foo og to gange // Object. foo = null; // nu vil GC eventuelt deallokere alle 3 objekter.Memory leak opstår typisk ved at man bliver ved med at indsætte nye objekter i et Map eller List, uden at dereferencere dem igen.
Baldur
Thread Previous • Date Previous • Date Next • Thread Next |