Sobes.tech
Junior

რა არის გარვიჯის გამგროვებელი C#-ში?

sobes.tech AI

პასუხი AI-სგან

C#-да қоқыс жыйнагыч — бул автоматташтырылган эс тутумду башкаруу процесси. Ал колдонмодон башкара албай калган объекттердин ээлеген эс тутумун бошотот.

Негизги аспектилери:

  • Автоматтык башкаруу: Өнүктүрүүчү көпчүлүк объекттер үчүн эс тутумду кол менен бөлүп берүү же бошотуу керек эмес. CLR (Common Language Runtime) муну автоматтык түрдө жасайт.
  • Байланыштарды көзөмөлдөө: Қоқыс жыйнагыч, кайсы объекттер түпкү булактардан (мисалы, жиптердин стектери, статикалык талаалар) жеткиликтүү экенин аныктайт. Бул булактардан шилтемеси жок объекттер жеткиликтүү эмес деп эсептелип, жыйналат.
  • Өсүштөр: Heap (жыйнак) 0, 1 жана 2 өсүштөргө бөлүнөт. Жыйнактан кийин "жашаган" объекттер жогорку өсүштөргө которулат. Бул процессти оптималдаштырат, анткени көпчүлүк объекттер кыска өмүрлүү.
  • Финалдаштыруу: Объекттер Finalize методуна ээ болушу мүмкүн, аны калдык жыйнагыч эс тутумду бошотууда чакырат. Бул башкарылбаган ресурстарды тазалоо үчүн колдонулат, бирок анын колдонулушу убакыттын алдын ала белгиленбеши себептүү чектелген.
  • Кысуу: Жыйнактан кийин, калдык жыйнагыч жашаган объекттерди жылдырып, эс тутумдун бөлүнүшүн азайтат.
// Башкарылган heapте объект түзүү мисалы
MyClass obj = new MyClass();
// Эми objке шилтеме жок болсо, калдык жыйнагыч эс тутумду бошотот

// Башкарылбаган ресурстарды IDisposable жана using колдонуп, кол менен бошотуу мисалы
// Finalize ордуна сунушталган ыкма
using (var resource = new UnmanagedResourceWrapper())
{
    // Ресурсту колдонуу
} // Мында resource.Dispose() чакырылат, башкарылбаган ресурс тазаланады