éléments de réponse:
% ./t [0.56 0.72 - ]
total used free shared buffers cached
Mem: 2977 931 2046 0 10 86
-/+ buffers/cache: 834 2143
Swap: 3812 1179 2632
Alloue 1GB de mémoire...
total used free shared buffers cached
Mem: 2977 1960 1017 0 10 86
-/+ buffers/cache: 1863 1113
Swap: 3812 1179 2632
Libère la mémoire allouée...
total used free shared buffers cached
Mem: 2977 932 2045 0 10 86
-/+ buffers/cache: 835 2142
Swap: 3812 1179 2632
Ecrit un gros fichier de 1GB ... (long)
1024+0 enregistrements lus
1024+0 enregistrements écrits
1073741824 octets (1,1 GB) copiés, 24,9048 seconde, 43,1 MB/s
total used free shared buffers cached
Mem: 2977 1977 1000 0 10 1112
-/+ buffers/cache: 854 2123
Swap: 3812 1179 2632
Lit le fichier en question...
total used free shared buffers cached
Mem: 2977 1977 1000 0 10 1112
-/+ buffers/cache: 854 2123
Swap: 3812 1179 2632
Voila a quoi correspond free ;)
ed
Voici le code du programme qui a généré ça:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void printfree()
{
/* Affiche la sortie de free... */
system("free -m");
fflush(stdout);
}
int main(int argc, char **argv)
{
unsigned char *p[1024];
int i;
FILE *f;
printfree();
printf("Alloue 1GB de mémoire...\n");
/* p = malloc(1024); 1KB */
for (i = 0; i < 1024; i++)
{
p[i] = malloc(1024*1024);
memset(p[i], 1, 1024*1024); /* Force l'utilisation de la mémoire ;) */
}
printfree();
printf("Libère la mémoire allouée...\n");
for (i = 0; i < 1024; i++)
free(p[i]);
printfree();
printf("Ecrit un gros fichier de 1GB ... (long)\n");
system("dd if=/dev/zero of=grosfichier bs=1024k count=1024");
printfree();
printf("Lit le fichier en question...\n");
system("cat grosfichier >/dev/null");
printfree();
printf("Voila a quoi correspond free ;)\ned\n");
return 0;
}