CLR çöp toplama mekanizmasının, gözyaşı ve çöp toplama için kilitlenme oluşturmadan, nesne hiyerarşiğimde döngüsel başvurulardan kurtulmak anlamına geldiğine dair bir teorim var. Bu güvenli bir varsayım mı? (Hedef dil VB.NET)CLR çöp toplama metodolojisi, etrafında dairesel nesne referansları atmanın güvenli olduğu anlamına mı geliyor?
cevap
.NET çöp toplayıcısı, bir nesil işaretleyici ve toplayıcı toplayıcıdır. Referans sayımı kullanmaz. Evet, dairesel referanslara sahip olmak güvenli. Dil bu maddesine göre
Sadece bir referansı bir statik geçirmekten kaçınmaya dikkat edin ve aynı zamanda delegelerin uygulandıkları nesneye referans olarak sayılacağını da unutmayın. Statik olay işleyici listesi gibi şeyleri canlı tutmak çok kolay. – morechilli
önemli değildir: https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5109829.html
Dairesel referans her diğer bakınız İki nesne olması oluşan bir problemdir. Diyelim ki A Sınıfı var demektir, Sınıf B'ye atıfta bulunur. B Sınıfı da Sınıf A'ya atıfta bulunuyorsa, o zaman dairesel referansımız vardır. Bu, birçok durumda olur. için tipik bir örnek, bu, alt nesnesiyle etkileşimde bulunduğu ve ana üst nesnesinin bir başvurusu bulunduğu, nesneler arasında ana-alt ilişkidir. Bu, numaralı nesnelerin, uygulamanın kapatıldığı temizlenene kadar temizlenmemesine yol açabilir. NET çöp toplama yolu, döngüsel başvuru sorununu çözüyor, çünkü çöp toplayıcısı, , root'dan erişilebilen nesnesini temizler. http://blogs.msdn.com/abhinaba/archive/2009/01/27/back-to-basics-reference-counting-garbage-collection.aspx o .NET çöp toplama çöp toplama referans sayma dayalı değil gibi görünüyor:
DÜZENLEME: bu yazı bakılırsa
.
okunmaya değer bir diğer makale (ayrıntılı olarak Çöp toplama açıklıyor) bu biridir: http://www.simple-talk.com/dotnet/.net-framework/understanding-garbage-collection-in-.net/
"Kökten erişilemiyor" –
- 1. Ruby Class nesne çöp toplama
- 2. newLISP çöp toplama kullanıyor mu?
- 3. Çöp toplama, java
- 4. Özürlü Çöp Toplama Bildirimleri
- 5. "Sorular" phpMyAdmin'de "sorgular" anlamına mı geliyor?
- 6. Statik üyelerin çöp toplama
- 7. Python'da manuel çöp toplama
- 8. Dairesel Nesne ile Ruby Garbarge Koleksiyonu Referanslar
- 9. nodejs çöp toplama çıkışı
- 10. Java, özel klonlama sırasında dairesel referansları algılar
- 11. Çöp toplama ve yansıma
- 12. C# çöp toplama nasıl azaltılabilir
- 13. Java 8 metaspace çöp toplama
- 14. Çöp toplama ve saklama kutusu
- 15. javascript anonim işlev çöp toplama
- 16. Çöp Toplama yerel değişkeni kaldırmadı
- 17. yeni Konu() ve Çöp Toplama
- 18. Android JNI yerel kod C++ nesneleri çöp toplama çağırmak mı?
- 19. Ruby'de çöp toplama profili nasıl yapılır
- 20. Ruby: Çöp toplama için bir nesneyi işaretleme
- 21. Rxjava AndroidSchedulers.mainThread() UI iş parçacığı anlamına mı geliyor?
- 22. Altişlemde `shell = shell` `shell`` bash` anlamına mı geliyor?
- 23. İfadeler, virgüllerin Javascript'te sözdizimsel olarak geçerli olması anlamına mı geliyor?
- 24. node js çöp toplama/bellek sorunları krom
- 25. Son derece uzun çöp toplama süreleri
- 26. PyS60'ın güvenilir bir çöp toplama sistemi var mı?
- 27. DotTrace Performance Profiler [Çöp toplama] ile ne ifade ediyor?
- 28. İzole döngüsel referanslarla çöp toplama davranışı?
- 29. Çöp Toplama neden bu kadar yavaş?
- 30. Durdurulan Hizmet Sabit Çöp Toplama İşlemi Yapıyor
çok iyi kabul edilen cevap benzer bir soru için buraya bakınız http://stackoverflow.com/questions/400706/circular-references -ause-memory-leak –
@David: AZ, referans sayımı kullanamaz dedi. –
@Johannes: Bu benim yorumumda bir yazım hatasıydı, (soruya değil) soruyu kastettim. İlk soru, CLR'de referans sayımının kullanımının güvensiz olup olmadığıydı. Soru (AZ'ın cevabı değil) CLR'nin GC'yi nasıl yaptığı konusunda yanlıştı. –