Je vais prendre un exemple :
garbage collector.
Le programme indique qu'un objet est "libérable" (weak reference dans les langages de haut niveau), dans notre exemple une page web sauvegardé.
L'OS prévient le garbage collector quand il a besoin de ressources. Le GC libère l'espace dont il n'a plus besoin (objets plus accessibles), et les objets libérables.
Le programme test (référence null dans un langage de haut niveau) si l'objet existe au moment d'y accéder :
if(obj == null)//plus dans le cache, le GC la libéré parcque besoin de mémoire
obj = new ...
else //dans le cache
Normalement si le GC est bien foutu, il va éviter de libérer systématiquement la mémoire des objets libérables (puisqu'il pourra potentiellement les recycler, et parcque c'est pas nécessaire, ca sert à rien de bouffer du CPU), on va donc avoir un cache qui va grossir, et qui va se "vider" lorsque l'OS aura besoin de mémoire.
Evidemment, quand on programme encore en C avec des malloc et des free c'est une autre pair de manche :)
[^] # Re: Mouais
Posté par TImaniac (site web personnel) . En réponse au journal Gestion de la mémoire sous Firefox 1.5. Évalué à 1.
garbage collector.
Le programme indique qu'un objet est "libérable" (weak reference dans les langages de haut niveau), dans notre exemple une page web sauvegardé.
L'OS prévient le garbage collector quand il a besoin de ressources. Le GC libère l'espace dont il n'a plus besoin (objets plus accessibles), et les objets libérables.
Le programme test (référence null dans un langage de haut niveau) si l'objet existe au moment d'y accéder :
if(obj == null)//plus dans le cache, le GC la libéré parcque besoin de mémoire
obj = new ...
else //dans le cache
Normalement si le GC est bien foutu, il va éviter de libérer systématiquement la mémoire des objets libérables (puisqu'il pourra potentiellement les recycler, et parcque c'est pas nécessaire, ca sert à rien de bouffer du CPU), on va donc avoir un cache qui va grossir, et qui va se "vider" lorsque l'OS aura besoin de mémoire.
Evidemment, quand on programme encore en C avec des malloc et des free c'est une autre pair de manche :)