Kas yra dinaminis atminties paskirstymas?

Dinaminis atminties paskirstymas, dar vadinamas krūvos atminties paskirstymu, yra atminties valdymo tipas, kuris smarkiai skiriasi nuo statinio atminties paskirstymo. Dinaminio atminties paskirstymo metu programuotojas tiksliai nurodo kompiuteriui, kiek atminties skirti kiekvienai programai ir kiek laiko atmintyje laikyti. Taip išsprendžiama daug problemų, kylančių dėl statinio atminties paskirstymo, pvz., per didelis atminties naudojimas ir užstrigusios programos. Nors tai išsprendžia daugelį problemų, jei programuotojas pamiršta nurodyti atmintį iškelti, dinaminė atmintis gali tapti problema.

Pagal numatytuosius nustatymus kompiuteriai naudoja statinį atminties paskirstymą. Tai reiškia, kad atmintyje saugomos programos, kai jos naudojamos, net jei programa nebenaudojama arba jei saugoma atmintis tampa pavojinga arba trukdo atlikti. Pavyzdžiui, jei vartotojas nustoja vykdyti programą, kuri užima 2 megabaitus (MB) 3 MB įrenginyje, o antrai programai reikia dar 2 MB, antroji programa neveiks. Taip yra todėl, kad kompiuteryje nėra pakankamai atminties kitai programai.

Naudodamas statinį atminties paskirstymą, vartotojas ar programuotojas negali nurodyti, kiek atminties jis nori išsaugoti, taip pat programuotojas negali nurodyti statinei atminčiai išmesti atmintį, kad būtų atlaisvinti ištekliai. Štai kodėl pažengę vartotojai dažnai naudoja dinaminį atminties paskirstymą. Programuotojas gali valdyti viską, kas susiję su atmintimi, įskaitant tai, kiek laiko išlaikyti išteklius.

Pavyzdžiui, programuotojas gali nustatyti dinaminį atminties paskirstymą, kad būtų išlaikyta tik 1 MB arba mažiau, o tai sutaupytų pakankamai sistemos atminties, kad būtų galima atidaryti kitas programas. Tai galima padaryti, nes statinėje atmintyje paprastai saugoma viskas apie programą, o dinaminė atmintis leidžia programuotojams nustatyti mažesnę reikšmę, kurioje saugomi kai kurie duomenys, bet ne viskas. Tuo pačiu metu vis tiek reikės statinės atminties, kurią galima nustatyti šioje paskirstymo schemoje.

Galima dinaminės atminties paskirstymo problema – tokia, kuri retai pasitaiko – yra ta, kad dinaminė atmintis gali užsipildyti, jei programuotojas pamirštų nustatyti laiko reikšmę. Jei nenustatyta laiko reikšmė, kitaip nei statinė atmintis, kuri ilgainiui atlaisvins atmintį, dinaminė atmintis išsaugos informaciją. Jei programoje yra šiukšlių išvarymo programa, o dauguma tai daro, ji bus aktyvuota po tam tikro laiko, kad išvalytumėte atmintį. Vis dar geriausia yra nustatyti atminties paskirstymo laiko reikšmę.