En iyi uygulama, çoğu durumda çöp toplamayı zorlamamaktır. (Üzerinde çalıştığım her sistem çöp toplamaya zorladı, çözülürse çöp toplamayı zorlama ihtiyacını ortadan kaldıracak ve sistemi büyük ölçüde hızlandıracak sorunların altını çizen her sistem.)
Bir var birkaç durum size daha sonra çöp toplayıcı yapar bellek kullanımı hakkında daha fazla bilgi. Bu, çok kullanıcılı bir uygulamada veya bir seferde birden fazla isteğe yanıt veren bir hizmette olası değildir.
Bununla birlikte, bazı parti tipi işlemelerde , GC'den daha fazlasını bilirsiniz. Örneğin bir uygulama düşünün.
- Komut satırında dosya adlarının bir listesi verilir
- Tek bir dosyayı işler ve ardından sonucu bir sonuç dosyasına yazar.
- Dosyayı işlerken, dosyanın işlenmesi tamamlanana kadar toplanamayacak çok sayıda birbirine bağlı nesne oluşturur (örneğin bir ayrıştırma ağacı)
- İşlediği dosyalar arasında fazla bir durum tutmaz .
Sen olabilir her dosyayı işlemek zorunda sonra tam bir çöp toplama zorlamak gerektiğini test (dikkatli sonra) dava yapabilmek.
Diğer bir durum, bazı öğeleri işlemek için birkaç dakikada bir uyanan ve uykudayken herhangi bir durumu korumayan bir hizmettir . O zaman uyumadan hemen önce tam bir koleksiyon yapmaya zorlamak faydalı olabilir .
Bir koleksiyonu zorlamayı düşündüğüm tek zaman, yakın zamanda çok sayıda nesnenin oluşturulduğunu ve şu anda çok az nesneye başvurulduğunu bildiğim zamandır.
Kendim için bir GC zorlamak zorunda kalmadan bu tür şeyler hakkında ipuçları verebildiğimde bir çöp toplama API'sine sahip olmayı tercih ederim.
Ayrıca bkz. " Rico Mariani'nin Performans Haberleri "