Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uygulamanın kodu bu nesneye ulaşabilirken, atık toplayıcı bir uygulama tarafından kullanılan bir nesneyi toplayamaz. Uygulamanın nesneye güçlü bir bağlantısı olduğu söylenir.
Zayıf başvuru, atık toplayıcının nesneyi toplamasına izin verirken uygulamanın nesneye erişmesine izin verir. Zayıf başvuru yalnızca, güçlü başvuru olmadığında nesne toplanana kadar belirsiz süre boyunca geçerlidir. Zayıf bir başvuru kullandığınızda, uygulama yine de nesneye güçlü bir başvuru elde edebilir ve bu da nesnenin toplanmasını engeller. Ancak, her zaman güçlü bir başvuru yeniden kurulmadan önce çöp toplayıcının nesneye erişme riski vardır.
Zayıf başvurular çok fazla bellek kullanan nesneler için yararlıdır, ancak çöp toplama tarafından geri kazanıldıklarında kolayca yeniden oluşturulabilir.
Windows Forms uygulamasındaki bir ağaç görünümünün kullanıcıya karmaşık bir hiyerarşik seçenek gösterdiği varsayın. Temel alınan veriler büyükse, kullanıcı uygulamadaki başka bir işle uğraşırken ağacı bellekte tutmak verimsizdir.
Kullanıcı uygulamanın başka bir bölümüne geçtiğinde, sınıfını WeakReference kullanarak ağaca zayıf bir başvuru oluşturabilir ve tüm güçlü başvuruları yok edebilirsiniz. Kullanıcı yeniden ağaca geçtiğinde, uygulama ağaca güçlü bir başvuru elde etmeye çalışır ve başarılı olursa ağacı yeniden oluşturmaktan kaçınıyor.
Bir nesneyle zayıf bir başvuru oluşturmak için, izlenecek nesnenin örneğini kullanarak bir WeakReference oluşturursunuz. Kod örneği için sınıf kitaplığına bakın WeakReference .
Kısa ve Uzun Zayıf Referanslar
Kısa bir zayıf referans veya uzun bir zayıf referans oluşturabilirsiniz.
Kısa
Çöp toplama tarafından nesne geri kazanıldığında kısa bir zayıf başvurunun hedefi
nullolur. Zayıf başvuru kendisi yönetilen bir nesnedir ve diğer yönetilen nesneler gibi çöp toplamaya tabidir. Kısa bir zayıf başvuru, WeakReference için parametresiz bir oluşturucudur.Uzun
Nesnenin Finalize yöntemi çağrıldıktan sonra uzun bir zayıf başvuru korunur. Bu, nesnenin yeniden oluşturulmasını sağlar, ancak nesnenin durumu tahmin edilemez durumda kalır. Uzun bir referans kullanmak için
trueöğesini WeakReference oluşturucuda belirtin.Nesnenin türünde bir Finalize yöntemi yoksa, kısa süreli zayıf referans işlevi devreye girer ve zayıf referans, yalnızca hedef toplanana kadar geçerlidir; bu da, sonlandırıcı çalıştırıldıktan sonra herhangi bir zamanda gerçekleşebilir.
Güçlü bir referans oluşturmak ve nesneyi yeniden kullanmak için, bir Target öğesinin WeakReference özelliğini nesnenin türüne dönüştürün.
Target özelliği null döndürüyorsa, nesne toplanmış olur. Aksi takdirde, uygulama buna güçlü bir referans kazandığı için nesneyi kullanmaya devam edebilirsiniz.
Zayıf Başvuruları Kullanma Yönergeleri
Uzun zayıf referansları yalnızca gerektiğinde kullanın çünkü nesnenin durumu sonlandırma ardından tahmin edilemez olur.
İşaretçinin kendisi büyük ya da daha büyük olabileceği için küçük nesnelere zayıf referanslar kullanmaktan kaçının.
Bellek yönetimi sorunlarına otomatik çözüm olarak zayıf başvurular kullanmaktan kaçının. Bunun yerine, uygulamanızın nesnelerini işlemek için etkili bir önbelleğe alma ilkesi geliştirin.