Röportajcı bana bugün bunu sordu ... bir cevap var mı?
Röportajcı bana bugün bunu sordu ... bir cevap var mı?
Yanıtlar:
System.GC.Collect()çöp toplayıcıyı çalıştırmaya zorlar. Bu önerilmez ancak durumlar ortaya çıkarsa kullanılabilir.
Gc'yi açıkça çağırmanız önerilmez, ancak
GC.Collect();
GC.WaitForPendingFinalizers();
Kodunuz boyunca açıkça GC'yi arayacaktır, GC.WaitForPendingFinalizers();sonra aramayı unutmayın GC.Collect().
WaitForPendingFinalizersmutlaka "daha iyi performans" vermez: sonlandırma kuyruğundaki tüm nesneler sonlanıncaya kadar engeller (önceki çağrınız tarafından oraya konmuş olabilecek nesneler Collect). Bu nesnelerin toplanması için bir şans istiyorsanız, aradıktan sonra başka bir çağrı yapmanız gerekir . Collect WaitForPendingFinalizers
WaitForPendingFinalizers?
GC.Collect()
dan MDSN ,
Erişilemeyen tüm belleği geri almaya çalışmak için bu yöntemi kullanın.
Hafızada ne kadar süre kaldıklarına bakılmaksızın tüm nesneler toplama için dikkate alınır; ancak, yönetilen kodda başvurulan nesneler toplanmaz. Sistemi, kullanılabilir maksimum bellek miktarını geri almaya çalışmak için bu yöntemi kullanın.
Bununla birlikte, Çöp Toplayıcı'nın beklediğiniz şeyi her zaman temizlemeyebileceğini unutmayın ...
Çöp toplayıcıyı çalışmaya zorlamak istemezsiniz.
Ancak, daha önce (tamamen akademik bir alıştırma olarak) yaptıysanız:
GC.Collect()
Net Framework bunu otomatik olarak yapar, ancak her ihtimale karşı. İlk olarak, silmek istediğinizi seçtiğinizden emin olun ve ardından çöp toplayıcıyı arayın:
randomClass object1 = new randomClass
...
...
// Give a null value to the code you want to delete
object1 = null;
// Then call the garbage collector to erase what you gave the null value
GC.Collect();
Sanırım bu .. Umarım birine yardım ederim.