Sobes.tech
Middle

Қадамдар қайсысы ресурс тазалаудың жадты басқаруда?

sobes.tech AI

Ҷавоб аз AI

.NETдаги хотира бошқаруви қуйидаги ресурсларни тозалаш босқичларини ўз ичига олади:

  1. Белгилаш босқичи (Marking): Ўтказгич мусобақа, қайси объектлар қутблардан (стек ўзгарувчилари, статик ўзгарувчилар ва реестрлар) мавжуд бўлганлигини аниқлайди. Мавжуд бўлмаган объектлар йиғиш учун белгиланади.

  2. Жойлаштириш босқичи (Relocating/Compacting): Мавжуд объектлар ҳаракатланади (жамланади) хотирада, бирлаштирилган бўшлиқни чиқариш ва парчаланишни камайтириш учун. Бу босқичда, ҳаракатланадиган объектларга ишора қилувчи кўрсатгичлар янгиланади. Бу босқич фонадан ташқари тузилмаларда мавжуд.

  3. Тозалаш босқичи (Sweeping): Йиғиш учун белгиланган объектларнинг Finalize методлари чақирилади, агар улар белгиланган бўлса. Кейин, бу объектлар ёки уларнинг эгаллаган хотираси озод қилинади.

Finalizeдан фойдаланиш намунаси (маслиҳат берилмайди, IDisposableдан фойдаланиш яхшироқ):

public class ResourceHolder
{
    // Озод қилиш талаб қилинган ресурс
    private System.IO.StreamWriter _writer;

    public ResourceHolder(string filePath)
    {
        _writer = new System.IO.StreamWriter(filePath);
    }

    // Якуний усул, мусобақа мусобақаси томонидан чақирилади
    ~ResourceHolder()
    {
        // Бошқарилмаган ресурсни озод қилиш
        _writer?.Dispose();
    }

    // Бошқа методлар...
}