Quina diferència hi ha entre la recollida d’escombraries i la compactació d’escombraries?


Resposta 1:

La pregunta la respon: algorisme de marca compacta - Viquipèdia

Recollida d’escombraries: marcar com a gratuïts els blocs de memòria (que no es poden recuperar).

Compactació: moure els blocs de memòria que s’aconsegueixen entre si, de manera que no hi hagi blocs de memòria lliures entre ells. Generalment s’implementa en combinació amb la recollida d’escombraries, però no ha de ser així.

Per què la recollida d’escombraries és important: permet que un programador s’allunya de la gestió de la memòria. El col·lector d’escombraries alliberarà qualsevol memòria d’escombraries sense necessitat de lliurar activament la memòria com ho fan els programadors C. Això elimina una mica de càrrega cognitiva del programador i fa més fàcil escriure codi correcte (C ++ té un model diferent).

Per què la compactació és important: La compactació es realitza generalment en combinació amb la recollida d'escombraries. La compactació elimina la fragmentació (Wikipedia). La fragmentació, com la memòria d'escombraries, redueix l'ús de la memòria.

Per exemple, considereu la memòria següent:

A continuació, es mostren 2 fragments gratuïts per un total de 900 MB, però a l’hora d’assignar un bloc de memòria d’1 GB fallarà, ja que no hi ha cap bloc consecutiu de 900 MB. La compactació mourà l'objecte 2 cap a l'esquerra, resultant amb: