gyenge hivatkozások
A szemétgyűjtő nem gyűjt az objektum által használt alkalmazást, amíg az alkalmazás kódját kölcsönhatásba lép az objektumot. Azt mondják, hogy az alkalmazás egy erős utalás az objektumot.
A gyenge kapcsolatok hasznosak használó objektumok sok memóriát, de újra meg kell határozni különösebb erőfeszítés nélkül, ha már törölt a szemétgyűjtő.
Tegyük fel, hogy egy hierarchikus ábrázolása egy Windows Forms alkalmazás a felhasználó látja kiterjedt hierarchikus felépítése a különböző megoldásokat. Ha az alapadatok nagy mennyiségű tárolását a fa memória hatékony, különösen, ha a felhasználó csinál ebben az alkalmazásban mást.
Ha a felhasználó átvált egy másik része az alkalmazás használható WeakReference osztály létrehozásához gyenge láncszem a fát, és távolítsa el a szigorú referencia. Amikor a felhasználó visszatér a fa, az alkalmazás megkísérli megszerezni a szigorú utalás a fát, és ha sikeres, ezt a műveletet, hogy ne hozza létre újra a fa.
Telepíteni egy gyenge utalást egy tárgyat, akkor létre kell hoznia WeakReference. segítségével például a tárgy, amit akarunk figyelni. Ezután meg kell rendelni az ingatlan Cél objektum, és állítsa be a null érték a kezdeti objektum referencia. Példa kód cm. WeakReference leírásában az objektum az osztály könyvtár.
Hozhat létre egy rövid gyenge referencia vagy hosszú gyenge jelzet:
Annak megállapítására, szoros kapcsolatot, és újra a tárgyat, hogy Cél WeakReference tulajdonság az objektum az objektum típusát. Ha a cél tulajdonság NULL. az objektum törlésre került kollektor; Ha nem, akkor továbbra is használhatja az objektum egy alkalmazás, helyreállítása szigorú hivatkozva, hogy az objektum.
Használjunk hosszú gyenge referenciák csak szükség esetén, mint az állam a tárgy befejezését követően nem lehet megjósolni.
Kerülje a gyenge hivatkozások apró tárgyakat, mert a mutató önmagában lehet azonos térfogatú, vagy több.
Kerülje a gyenge referenciák automatikus megoldást a problémák a memória kezelése. Ehelyett egy hatékony gyorstárazással feldolgozásra alkalmazás objektumokat.