¿Cómo saber qué proceso consume memoria?

Mi MacBook Pro tiene 8G de RAM. Recientemente ocurrió una fuga de memoria. Las salidas de página y el intercambio utilizado siguieron aumentando. La última vez que usó ~8G de espacio de intercambio.

Pero en el Monitor de actividad, no puedo encontrar ningún proceso que tenga un valor grande en la columna 'Real Mem', 'Private Mem' ni 'Shared Mem'.

Revisé la columna %MEM en la salida de 'ps -ev', todos los procesos ocuparon menos del 1% de la memoria. La salida completa se pone en esta esencia: https://gist.github.com/aleung/4760556

¿Cuál es la forma de diagnosticar el problema de pérdida de memoria OSX?

La estadística %mem parece ser... extraña. No puedo entender de qué es un porcentaje. Pruebe ps -axven su lugar y eche un vistazo a las columnas RSS (memoria residente en KB) y VSZ (memoria virtual, también KB).
La fuga de memoria puede deberse a Isolator.app. Desde que eliminé esta aplicación, memoria libre > 3G por unos días. Pero esta pregunta sigue siendo válida, porque al ver el resultado de Activity Monitor y ps -axv, Isolator.app no ​​usó demasiada memoria.
Estoy en una situación similar, y también me gustaría saber la respuesta. Quizás deberíamos buscar en la consola y en los registros del sistema.

Respuestas (1)

Verifique con este comando (mostrará más procesos):

sudo ps -awxm -o %mem,rss,comm | sort -nr | head

si no ayuda, verifique con fs_usagepara mostrar las llamadas al sistema y las fallas de página relacionadas con el sistema de archivos:

sudo fs_usage -f filesys,diskio

especialmente página de entrada y salida agregando lo siguiente al comando anterior:

| egrep -i "page_|pgin|pgout"

Agregue extra | grep -v kernelpara ignorar el proceso del kernel o | grep -v 0.00para mostrar estos con mayor tiempo dedicado.

Si su intercambio es grande, puede forzar el vaciado y vaciado de la memoria caché del disco mediante: sudo purge.

Según mi experiencia, OS X tiene algunos problemas con la administración de la memoria después de un mayor tiempo de actividad (cuando usaba toda la memoria libre), por lo que, a veces, solo el reinicio completo puede ayudar.

Compruebe también sudo iotopo sudo vm_stat 1los comandos que pueden ayudar.

Ver también: ¿Cómo investigar el alto uso de memoria de tareas del kernel?