Фрагментацията се появява и в системната памет (RAM). Приложните и системните процеси разпределят и използват памет в непоследователни блокове, тъй като съществуващите регистри на паметта се използват и използват повторно.
Може ли Рам да стане фрагментиран?
Пейджинг с памет създава вътрешна фрагментация, защото ще бъде разпределена цяла рамка на страницата, независимо дали е необходимо толкова много място за съхранение или не. Поради правилата, регулиращи разпределението на паметта, понякога се разпределя повече компютърна памет, отколкото е необходимо.
Какво причинява фрагментация на паметта?
Фрагментацията на паметта е, когато по-голямата част от паметта ви е разпределена в голям брой непоследователни блокове или парчета - оставяйки добър процент от общата ви памет неразпределена, но неизползваема за повечето типични сценарии. Това води до изключения от липса на памет или грешки в разпределението (т.е. malloc връща null).
Фрагментацията на паметта лоша ли е?
По принцип C++ програмиране няма проблем с фрагментацията на паметта. Винаги виждате виртуалната памет и винаги разпределяте последователни парчета виртуална памет. Единственото нещо, което можете да забележите, че последователно разпределените парчета не са непременно съседни в паметта.
Как предотвратявате фрагментирането на паметта?
Ако можете да изолирате точно тези места, където е вероятно да разпределите големи блокове, можете (в Windows) директно извикате VirtualAlloc вместо да преминавате през мениджъра на паметта. Това ще избегнефрагментация в рамките на нормалния мениджър на паметта.