Sobes.tech
Middle

Kas ir atkritumu savāktājs un kā tas darbojas?

sobes.tech AI

Atbilde no AI

Atkritumu savācējs (Garbage Collector, GC) ir automātiskas atmiņas pārvaldības mehānisms, kas piešķir un atbrīvo atmiņu, kas vairs netiek izmantota programmā.

Darba princips:

  1. Atmiņas piešķiršana: Kad programma izveido objektus, atkritumu savācējs tiem piešķir vietu kaudzē (heap).
  2. Pieejamības noteikšana: Atkritumu savācējs nosaka, kuri objekti ir pieejami no programmas "dzidām" (root). Dzidas var būt lokālas mainīgās funkcijās, statiskas mainīgās, atsauces no pavedieniem u.c.
  3. Atkritumu savākšana: Objekti, kuri nav pieejami no dzidām, tiek uzskatīti par "atkritumiem" un to atmiņa var tikt atbrīvota.

Ir dažādi atkritumu savākšanas algoritmi, piemēram:

  • Marķēšana un tīrīšana (Mark-and-Sweep): Savācējs pārbauda pieejamo objektu grafu no dzidām, marķē tos. Tad tas pārbauda visu kaudzi un atbrīvo marķēto objektu atmiņu.
  • Kopēšana: Kaudze ir sadalīta divās daļās. Pieejamie objekti tiek kopēti no vienas daļas uz otru, bet vecā daļa tiek attīrīta.
  • Ģenracionāls: Objekti tiek sadalīti pa paaudzēm. Jaunie objekti nonāk jaunajā paaudzē, vecie — nobriedušajā. Atkritumu savākšana biežāk notiek jaunajā paaudzē, jo lielākā daļa objektu ir īslaicīgi.

Piemērs Java valodā (vienkāršots):

// Programma izveido objektus kaudzē
Object obj1 = jauns Object();
Object obj2 = jauns Object();

// obj1 kļūst nepieejams
obj1 = null;

// Atkritumu savācējs var atbrīvot obj1 aizņemto atmiņu