Mac OS X: Qu'est-ce qui utilise ma mémoire "active"?

J'utilise un MacBook Pro récent avec 8 Go de RAM et, après quelques heures de l'utiliser au travail, je remarque la quantité de mémoire «active» en croissance et en croissance.

Chaque fois que je redémarre mon Mac, tout semble bien et il n'utilise presque aucune RAM. Mais après quelques heures, cela ressemble à ceci:

Capture d'écran

Comme vous pouvez le voir, dans ce cas, il coûte environ 4,3 Go.

En tant que développeur, je sais que la «mémoire active» est la quantité de mémoire utilisée actuellement par les processus en cours d'exécution. Donc, la première chose que j'ai faite était de quitter toutes les applications et de tuer tous les processus qui ne semblent pas appartenir à Mac OS X.

Après avoir fait cela, ma mémoire active est tombée à environ 400 Mo, mais s'est coincé à ce que vous voyez dans la capture d'écran. Il n'y a plus de processus ni d'applications à quitter.

Maintenant, je me demande ce qui se passe réellement sur la mémoire? top et Activity Monitor ne signaler aucun processus avec une utilisation de mémoire élevée.

Des idées?

Merci!


Mise à jour 1:

Merci à la réponse de Doug Harris, j'ai fait cette capture d'écran. Il montre une utilisation de mémoire active de 2,55 Go dans le système, mais seulement une utilisation de mémoire de 1,55 Go que la commande ps calcule.

Entrez la description de l'image ici

Je ne sais pas où le reste des 2.55 Go est parti ou où il est alloué. J'ai installé des instruments, mais comme cela se produit sur une période de quelques heures, il est difficile d'utiliser les instruments. Cela ressemble à une fuite de mémoire quelque part dans le système d'exploitation. Peut-être un pilote (bien que je n'ai pas d'extension de noyau installé – vérifié avec kextstat ).

Personnellement, je pense qu'il serait intéressant de voir «plus» sur le statut de la gestion de la mémoire. Sous Linux, il existe des informations sous "/ proc" disponibles, afaik.

Même si aucun processus unique n'a une forte utilisation de la mémoire, il existe encore beaucoup de processus – cela s'ajoute.

À l'aide de ps et d'autres outils de ligne de commande, vous pouvez approfondir cela.

Tout d'abord, utilisez les options de ps pour limiter ce qui apparaitre à la mémoire de résidents et le nom de la commande. -m sort la sortie par l'utilisation de la mémoire, -a montre les processus de tous les utilisateurs, -x montre les processus non associés à un terminal (c'est-à-dire la plupart des applications Mac).

 $ ps -axm -o "rss,comm" 

Voici les premières lignes que je vois:

  RSS COMM 210256 /Applications/Firefox.app/Contents/MacOS/firefox-bin 158276 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome 155360 /Applications/iTunes.app/Contents/MacOS/iTunes 

Ce n'est pas un choc pour moi que ceux-ci sont au sommet (et le processus Chrome montré n'est que l'un d'entre eux). La colonne RSS est exprimée en bloc de 1024 octets. Ainsi, iTunes utilise environ 151,7 Mo.

Cette sortie est bien formée pour pouvoir la jeter dans une feuille de calcul pour analyser si vous aimez analyser les choses de cette façon. Je vais rester à la ligne de commande un peu plus longtemps

Encadrez ensemble pour voir la somme de tous les processus:

 $ ps -axm -o "rss,comm" | awk 'BEGIN { s=0;}; {s=s+$1;}; END { printf("%.2f GB\n", (s/1024.0/1024));}' 

La sortie que je vois pour cela est de 2.44 GB , pas exactement ce que je vois pour la mémoire Active dans Activity Monitor, mais assez près que je peux utiliser ps pour aller au bas de ceci.

Vous pouvez ajouter ensemble ces processus utilisant plus de 100 Mo:

 $ ps -axm -o "rss,comm" | awk 'BEGIN { c=0;s=0;}; ($1 > 100000) {c=c+1;s=s+$1;}; END { printf("%.2f GB from %d processes\n", (s/1024.0/1024),c);}' 0.98 GB from 8 processes 

Je ne vous ai pas dit exactement ce qui utilise la mémoire de votre Mac, mais ces outils vous aideront à découvrir.

Man -k DTrace. Ces outils sont ceux qui vont résoudre ce problème. Bonne chance

Il semble que l'un des processus système soit une perte de mémoire (que ce soit, ou un nombre croissant de processus système soient exécutés pour une raison quelconque). Vous pouvez vérifier cela directement dans Activity Monitor en basculant le menu contextuel dans la barre d'outils de Mes processus vers tous les processus, puis en triant par la colonne Real Mem. Recherchez des processus utilisant beaucoup de mémoire réelle, et / ou beaucoup d'instances du même nom de processus. Cela ne résoudra pas le problème, mais devrait au moins vous donner une idée de l'origine.

Pour moi, il semble que la mémoire active soit une mémoire libre disponible pour la réutilisation, mais pas spécifiquement marquée comme "gratuite"