optimalizálása alkalmazások

Néha azonban kívánatos fenntartani egy láthatatlan karakterlánc objektumhoz társított, anélkül, hogy befolyásolná a szemétgyűjtő eltávolítja az objektumot a memóriából. Amikor a szemétgyűjtő eltávolítja a tárgyat, a string nem kapcsolódik a tárgyhoz, és tudjuk azonosítani. Ha a szemétgyűjtő nem is megérintik a tárgyat használó ezt a sort, képesek leszünk visszaállítani egy erős linket a helyszínen, és használja újra.

Ez hasznos lehet sok esetben, a leggyakoribb, amely az alábbiak:

A külső szolgáltatás tárolás nélkül objektumot. Olyan szolgáltatások, mint időzítő és események, a tárgyak ellátható mentés nélkül linkek nekik, ami segíthet, hogy megszüntesse leggyakoribb oka a memória szivárgás.

Automatikus vezérlés caching stratégia vagy fenntartására lehetőség áll rendelkezésre. A cache fér gyenge referenciákat a legutóbb használt tárgyak zavarása nélkül a rendelkezésükre áll; medence is két részre osztható - az alap, minimális méretű tároló szoros kapcsolatok, továbbá tartalmaz egy gyenge láncszem.

Tartsa nagy tárgyak, abban a reményben, hogy nem lehet újrahasznosítani. Az alkalmazás képes tárolni a gyenge láncszem a nagy objektum létrehozása és inicializálása amely hosszú időt vesz igénybe. Ha az objektum megsemmisül a szemétgyűjtő, az alkalmazás újra létre; különben lehet újra.

Tartsuk szem előtt, hogy az egyetlen biztonságos módja egy szigorú utalás az objektum egy gyenge referencia Cél tulajdonság. Még ha a IsAlive tulajdonság true értékkel tér vissza, akkor valószínű, hogy amint ez a cél visszaállítani. Annak elkerülése érdekében, versenykörülmények között, először meg kell használni a Target tulajdonság, rendeljen a visszatérési érték erős kapcsolatot (lokális változó, mezőt és így tovább), majd hasonlítsa össze a kapott érték null egyenlőséget. IsAlive ingatlan kell használni csak akkor kell meghatározni, hogy a megsemmisítés a létesítmény; például, hogy távolítsa el a gyenge láncszem a cache.

A következő bizonyítja végrehajtásának tervezetét az események alapján gyenge kapcsolatok (a képen). Az esemény maga nem tudja használni a mechanizmus .NET küldöttek közvetlenül, mert a küldött tartja a szoros kapcsolatot a célját, és ez egy zavaró tény. Ugyanakkor lehetőség van arra, hogy tárolja célba Küldött (formájában gyenge kapcsolatok). Ez a megközelítés lehetővé teszi, hogy megszabaduljon az egyik leggyakoribb oka a memóriavesztés .NET, ha a feledékenység események továbbra is nyilvántartásba!

optimalizálása alkalmazások

Event Generator tárolja gyenge kapcsolatok valamennyi előfizető számára. Ha az előfizető számára elérhetetlen a kérelmet, ha generátor képes meghatározni a megjelenése null értékek a gyenge láncszem.

Kezeli szemétgyűjtő

fenntartani a normális (erős) hivatkozás egy tárgy, megakadályozza annak ártalmatlanítása; által képviselt érték GCHandleType.Normal;

fenntartani egy rövid gyenge utalás az objektumot; által képviselt érték GCHandleType.Weak;

fenntartani egy hosszú gyenge hivatkozás az objektumot; által képviselt érték GCHandleType.WeakTrackResurrection;

A gyakorlatban a leírók begyűjtőig GC ritkán használják közvetlenül, hanem gyakran részt vesznek az eredmények a profil egy másik típusa a gyökerek, így tartsa a kezelt objektumok.

Kapcsolódó cikkek