Xotira boshqaruvida resurslarni tozalash bosqichlari qanday?
sobes.tech AI
AIdan javob
.NET'deki hafıza idarəetməsi aşağıdakı resursların təmizlənmə mərhələlərini əhatə edir:
-
İşarələmə mərhələsi (Marking): Çöp toplayıcı, kök obyektlərdən (yığım dəyişənləri, statik dəyişənlər və qeydiyyatlar) əlçatan olan obyektləri müəyyən edir. Əlçatan olmayan obyektlər toplanmaq üçün işarələnir.
-
Yerləşdirmə mərhələsi (Relocating/Compacting): Əlçatan obyektlər yaddaşda hərəkət etdirilir (sıkışdırılır), ardıcıl boşluq yaradılır və parçalanma azaldılır. Bu mərhələdə, hərəkət etdirilən obyektlərə işarə edən göstəricilər yenilənir. Bu mərhələ yalnız fon rejimi olmayan yığmalarda mövcuddur.
-
Təmizləmə mərhələsi (Sweeping): Toplama üçün işarələnmiş obyektlərin
Finalizemetodları çağırılır, əgər onlar təyin olunubsa. Sonra, bu obyektlərin tutduğu yaddaş azad edilir.
Finalize istifadə nümunəsi (tövsiyə edilmir, IDisposable istifadə etmək daha yaxşıdır):
public class ResourceHolder
{
// Azad edilməli olan resurs
private System.IO.StreamWriter _writer;
public ResourceHolder(string filePath)
{
_writer = new System.IO.StreamWriter(filePath);
}
// Çöp toplayıcı tərəfindən çağırılan finalizasiya metodu
~ResourceHolder()
{
// İdarə olunmayan resursu azad et
_writer?.Dispose();
}
// Digər metodlar...
}