Kezdőoldal » Számítástechnika » Programozás » Miért nem törlődik a weakrefer...

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:
100%
A System.gc() hívás nem garantált, hogy azonnal lefuttatja a GC-t.
2016. ápr. 7. 13:44
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:
100%

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"));


[link]

[link]

2016. ápr. 7. 17:31
Hasznos számodra ez a válasz?
 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!