Usuario del software
2014-03-11 02:46:08 +0000 2014-03-11 02:46:08 +0000
104

¿Por qué el uso total de memoria reportado por el Administrador de Tareas de Windows es mucho mayor que la suma del uso de memoria de todos los procesos?

El Administrador de Tareas muestra mi uso total de memoria en un 90% de mis 6 GB totales, pero ningún proceso está usando más de 250 MB de RAM, y la suma del uso de RAM de todos los procesos en ejecución es inferior a 2 GB. He probado:

  • Mirando los números de la columna "Memoria" en la pestaña "Procesos" del Administrador de tareas de Windows 8.
  • Mirando las columnas "Working Set", "Private Working Set", "Shared Working Set", y "Commit Size" en la pestaña "Details" del Administrador de Tareas.
  • Mirando columnas similares relacionadas con la memoria en el Explorador de Procesos.
  • He probado a ejecutar Sysinternals RAMMap, pero mientras tengo la crisis de poca memoria, se bloquea al iniciar. Una vez que resuelvo el problema, RAMMap se ejecuta normalmente, pero en ese momento es demasiado tarde.

Todos muestran una cantidad bastante pequeña de memoria utilizada.

Hay mucha gente haciendo variantes de esta pregunta, con diversas versiones de windows, por todo Internet. Algunos de ellos consiguen resolver sus problemas de poca memoria, a menudo reinstalando software; a veces reinstalando windows desde cero. Estoy buscando una respuesta a las preguntas generales que todos estos comparten, y que nunca parecen ser respondidas en otros lugares:

  1. ¿Por qué la memoria total utilizada es mucho mayor que la memoria utilizada por todos los procesos de la lista, no importa cómo intente contarlos?
  2. ¿Cómo puede windows "saber" que la memoria está usada sin saber qué programa la está usando?
  3. ¿Qué procesos podrían utilizar la memoria pero no aparecer en la lista?
  4. ¿Existe algún software que pueda dar más información sobre la memoria utilizada?

Detalles específicos de mi propio problema: Desde que actualicé a Windows 8.1, el problema ocurre tan pronto como inicio la sesión. Me quedo sin memoria en cuanto ejecuto cualquier programa. Me di cuenta en el Explorador de Procesos que se estaban ejecutando varias instancias de iexplore.exe, aparentemente iniciadas automáticamente. Una instancia en particular sólo utilizaba unos pocos MB de RAM, pero mostraba cientos de millones de fallos de página. Por capricho, maté ese proceso específico, y el uso de la memoria se redujo inmediatamente en un 70%.

Lo que nos lleva a una pregunta específica:

  • ¿Cómo pudo matar un proceso que supuestamente sólo utilizaba unos pocos MB para liberar varios GB?

Y una pregunta extra (presumiblemente difícil):

  • A falta de reinstalar Windows, ¿cómo podría evitar tener que pasar por esto cada vez que reinicie mi ordenador?

Respuestas [1]

6
2014-03-11 05:23:42 +0000

Por cierto, deberías intentar no utilizar el término "memoria". Crea mucha confusión. Si te refieres a la memoria física, di "memoria física", o "RAM". Si te refieres a memoria virtual, dilo. Si te refieres a un almacén de respaldo, dilo.

¿Por qué la memoria total utilizada es mucho mayor que la memoria utilizada por todos los procesos de la lista, no importa cómo intente contarlos?

Porque el sistema operativo no desperdicia la memoria física (RAM) a menos que no tenga otra opción.

¿Cómo podría windows "saber" que la memoria se utiliza sin saber qué programa la está usando?

Porque ningún programa la está utilizando. Considere, por ejemplo, la memoria que contiene el código de un programa que acaba de terminar. Ningún programa la está utilizando. Pero esa memoria se utiliza, ya que no está libre y contiene datos que podrían ser útiles (en caso de que el programa se ejecute de nuevo).

¿Qué procesos podrían utilizar la memoria pero ahora aparecen en la lista?

No es utilizada por procesos.

¿Existe algún software que pueda dar más información sobre la memoria utilizada? RAMMap puede hacerlo.

Sólo hay dos posibilidades, la RAM puede ser utilizada o puede ser desperdiciada. Obviamente, la primera es mejor. Cualquier memoria libre se desperdicia para siempre -- una máquina de 4GB no puede usar 2GB hoy para usar 6GB mañana. Si estás pensando "la quiero libre ahora para poder usarla más tarde", olvídalo. Puedes usarlo ahora y usarlo después.

¿Cómo podría matar un proceso que supuestamente sólo usaba unos pocos MB liberar varios GB?

Te estás quedando sin memoria de respaldo, no sin memoria física. Tiene mucha memoria física libre, pero no tiene suficiente memoria de respaldo para que el sistema operativo siga asignando memoria virtual que podría requerir respaldo.

El proceso sólo estaba usando unos pocos MB de memoria física, pero el SO podría haber tenido que reservar varios GB de memoria virtual respaldada para él. Por ejemplo, supongamos que un proceso crea una asignación de memoria privada con capacidad de escritura de un archivo de 2GB. El sistema operativo debe reservar 2GB de memoria virtual para el proceso, porque podría escribir en cada byte de esa asignación. Además, puede que nunca escriba en ninguno de ellos. Por eso necesitas un archivo de paginación de buen tamaño.

Los sistemas operativos modernos escriben muchos cheques (prometiendo el almacenamiento de respaldo) que nunca serán cobrados (requieren RAM). No puedes seguir escribiendo cheques (prometiendo almacenamiento de respaldo) incluso si tienes mucho dinero en el banco (RAM libre) si ya has escrito un montón de grandes cheques que podrían o no ser cobrados (prometiendo tanto almacenamiento de respaldo como tienes). Los archivos de paginación añaden almacenamiento de respaldo, permitiendo al SO seguir emitiendo cheques.

6

Preguntas relacionadas