Zayıf Başvurular
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şvurusu 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ı uygulamada başka bir şeye dahil olduğunda 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 Başvurular
Kısa bir zayıf başvuru veya uzun bir zayıf başvuru oluşturabilirsiniz:
Kısa
Nesne çöp toplama tarafından geri kazanıldığında kısa bir zayıf başvurunun hedefi olur
null
. 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, için WeakReferenceparametresiz 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 başvuru kullanmak için oluşturucuda WeakReference belirtin
true
.Nesnenin türünün bir Finalize yöntemi yoksa, kısa zayıf başvuru işlevi uygulanır ve zayıf başvuru yalnızca hedef toplanana kadar geçerlidir ve sonlandırıcı çalıştırıldıktan sonra her zaman gerçekleşebilir.
Güçlü bir başvuru oluşturmak ve nesnesini yeniden kullanmak için öğesinin TargetWeakReference özelliğini nesnenin türüne yayın. Target özelliği döndürürsenull
, nesnesi toplanır; aksi takdirde, uygulama buna güçlü bir başvuru kazandığından nesnesini kullanmaya devam edebilirsiniz.
Zayıf Başvuruları Kullanma Yönergeleri
Uzun zayıf başvuruları yalnızca gerektiğinde kullanın çünkü nesnenin durumu sonlandırıldıktan sonra tahmin edilemez.
İşaretçinin kendisi büyük veya daha büyük olabileceğinden, küçük nesnelere zayıf başvurular 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.
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin