Avatar billede Bifan Nybegynder
21. december 2013 - 04:08 Der er 4 kommentarer og
1 løsning

Sætte instance variable til null/garbage collector

Er kommet i tvivl om følgende........

Hvis jeg har et objekt:
Objekt obj1 = new Objekt();
og jeg også har en anden reference til dette objekt i en liste fx.

minListe.add(obj1);

Hvis jeg så siger:

obj1 = null;

Sletter jeg så objektet (via gc) da der ikke bliver refereret til den længere? eller sætter jeg bare variablen til at pege på null, og objektet lever stadig da listen peger på den?
Avatar billede arne_v Ekspert
21. december 2013 - 04:14 #1
Det sidste forudsat at programmet har en ref til minListe. Den har en ref til objektet og derfor bliver objektet ikke GC'et.
Avatar billede Bifan Nybegynder
21. december 2013 - 09:52 #2
Tak Arne. Har vi en måde at slette et objekt på uden at skulle både sætte variablen til null, samt fjerne den fra listen?  Eller hvis nu der var mange referencer til den i et større program. Smid svar!
Avatar billede arne_v Ekspert
21. december 2013 - 15:49 #3
Man saetter stort set aldrig til null i Java.

I det hele taget er det slet ikke meningen at du skal taenke paa GC.

Du har ref til de data du skal bruge. Naar du mister de ref fordi at diverse variable ryger ud af scope, saa bliver de GC'et paa et eller andet tidspunkt.

Med:

Objekt obj1 = new Objekt();
minListe.add(obj1);

saa er objektet klart til GC naar baade obj1 og minListe er ude af scope.
Avatar billede Bifan Nybegynder
22. december 2013 - 11:01 #4
Tak :) smid svar
Avatar billede arne_v Ekspert
22. december 2013 - 15:12 #5
svar
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester