Bu işlevle oynamanın ciddi sonuçlarını anlasam da (ya da en azından düşündüğüm budur), neden saygın programcıların, bilmeyenlerin bile kullanmayacağı şeylerden biri haline geldiğini anlamıyorum. bu ne için.
Diyelim ki, bellek kullanımının kullanıcının ne yaptığına bağlı olarak son derece değiştiği bir uygulama geliştiriyorum. Uygulama yaşam döngüsü iki ana aşamaya ayrılabilir: düzenleme ve gerçek zamanlı işleme. Düzenleme aşamasında milyarlarca hatta trilyonlarca nesnenin yaratıldığını varsayalım; bazıları küçük, bazıları değil, bazılarının sonlandırıcıları olabilir ve bazılarının olmayabilir ve ömürlerinin birkaç milisaniyeden uzun saate kadar değiştiğini varsayar. Ardından, kullanıcı gerçek zamanlı aşamaya geçmeye karar verir. Bu noktada, performansın temel bir rol oynadığını ve program akışındaki en ufak bir değişikliğin feci sonuçlar doğurabileceğini varsayalım. Nesne oluşturma daha sonra nesne havuzları ve benzerleri kullanılarak mümkün olan en aza indirilir, ancak daha sonra GC beklenmedik bir şekilde çalar ve hepsini atar ve biri ölür.
Soru: Bu durumda, ikinci aşamaya geçmeden önce GC.Collect () 'i çağırmak akıllıca olmaz mı?
Sonuçta, bu iki aşama asla birbiriyle çakışmaz ve GC'nin toplayabileceği tüm optimizasyon ve istatistikler burada çok az işe yarar ...
Not: Bazılarınızın da belirttiği gibi, .NET böyle bir uygulama için en iyi platform olmayabilir, ancak bu, bu sorunun kapsamı dışındadır. Amaç, bir GC.Collect () çağrısının bir uygulamanın genel davranışını / performansını iyileştirip iyileştiremeyeceğini açıklığa kavuşturmaktır. Böyle bir şeyi yapacağınız koşulların son derece nadir olduğu konusunda hepimiz hemfikiriz, ancak yine de, GC tahmin etmeye çalışır ve çoğu zaman mükemmel şekilde yapar, ancak yine de tahminle ilgilidir.
Teşekkürler.