Miért nem törlődik a weakreference garbagecollector után?
Figyelt kérdés
Úgy tudom a WeakReference-t töli a jvm a következő gc-vel.
WeakReference wr = new WeakReference("valami");
System.out.println(wr.get());
System.gc();
System.out.println(wr.get());
De akkor miért lesz ez a kimenet?:
run:
valami
valami
BUILD SUCCESSFUL
2016. ápr. 7. 13:12
1/3 anonim 



válasza:





A System.gc() hívás nem garantált, hogy azonnal lefuttatja a GC-t.
2/3 anonim 



válasza:





Azon kívül amit az #1-es válaszoló mondott, tehát hogy a System.gc() hívás nem garantálja azt hogy a gc azonnal le is fog futni, a "valami" egy String literal és soha nem fog törlődni még ha le is fut a gc. Ahhoz hogy a kódodnak legyen értelme, új String objektumot kell létrehozni ami törölhető:
WeakReference wr = new WeakReference(new String("valami"));
3/3 A kérdező kommentje:
Köszönöm mindkettőtöknek, ment a zöld kéz.
2016. ápr. 7. 23:29
További kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!