¿Por qué el uso de memoria total informado por el Administrador de tareas de Windows es mucho mayor que la suma del uso de memoria de todos los procesos? [duplicar]

98

El Administrador de tareas muestra mi uso total de memoria en el 90% de mi total de 6 GB, pero ningún proceso individual 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 intentado:

  • Mirando los números en la columna "Memoria" en la pestaña "Procesos" del Administrador de tareas de Windows 8.
  • Mirando las columnas "Conjunto de trabajo", "Conjunto de trabajo privado", "Conjunto de trabajo compartido" y "Tamaño de compromiso" en la pestaña "Detalles" del Administrador de tareas.
  • Mirando columnas similares relacionadas con la memoria en Process Explorer.
  • Intenté ejecutar Sysinternals RAMMap, pero mientras tengo la crisis de poca memoria, se bloquea en el lanzamiento. Una vez que resuelvo el problema, RAMMap se ejecuta normalmente, pero en ese momento es demasiado tarde.

Todos muestran una pequeña cantidad de memoria en uso.

Hay muchas personas que hacen variantes de esta pregunta, con varias versiones de Windows, en todo Internet. Algunos de ellos logran resolver sus problemas de poca memoria, a menudo reinstalando software; a veces reinstalando ventanas desde cero. Estoy buscando una respuesta a las preguntas generales que todos comparten, y que nunca parecen ser respondidas en otro lugar:

  1. ¿Por qué la memoria total utilizada es mucho mayor que la memoria utilizada por todos los procesos enumerados, sin importar cómo intente contarlos?
  2. ¿Cómo podría Windows "saber" que la memoria se usa sin saber qué programa la está usando?
  3. ¿Qué procesos podrían usar memoria pero no aparecer en la lista?
  4. ¿Existe algún software que pueda brindar más información sobre la memoria utilizada?

Detalles específicos de mi propio problema: desde la actualización a Windows 8.1, el problema ocurre tan pronto como me conecto. Me quedo sin memoria tan pronto como ejecuté cualquier programa. Noté en Process Explorer que varias instancias de iexplore.exe se estaban ejecutando, aparentemente se iniciaron automáticamente. Una instancia en particular solo usaba unos pocos MB de RAM, pero mostraba cientos de millones de fallas de página. Por un capricho, eliminé ese proceso específico, y el uso de memoria se redujo inmediatamente en un 70%.

Conduciendo a una pregunta específica:

  • ¿Cómo podría matar un proceso que supuestamente solo usó unos pocos MB y liberar varios GB?

Y una pregunta de bonificación (presumiblemente difícil):

  • A falta de volver a instalar Windows, ¿cómo podría evitar tener que pasar por esto cada vez que reinicie mi computadora?
Josh
fuente
3
También la memoria del núcleo cuenta en el uso. Publicar imagen de RAMMAp: blogs.technet.com/b/askperf/archive/2010/08/13/…
magicandre1981
2
Creo que la pregunta debería titularse "¿Por qué me estoy quedando sin memoria?"
surfasb
Esta pregunta es imposible de responder sin detalles. Lista de los programas instalados. O mejor aún, un volcado de los procesos en ejecución desde el Monitor de rendimiento.
surfasb
1
¿Realmente está apagando / reiniciando su computadora por completo o usa un apagado híbrido (predeterminado en Windows 8)? Después de cambiar a Windows 8 tuve un problema similar. Supongo que un controlador tomó más y más de mi RAM física y no la devolvió, incluso después de apagar y encender la computadora. En unas pocas semanas se acumuló a varios gigabytes. Así que ahora cada pocos días hago clic en "reiniciar" o mantengo presionada la tecla Mayús mientras hago clic en "apagar" para apagar la PC.
Robert
2
En mi caso, era la memoria "Driver Locked", reservada por Hyper-V por haber habilitado "Dynamic Memory". Tuve que detener todas las máquinas virtuales, deshabilitar la configuración y reiniciarlas. Gracias por la sugerencia de RAMMap.
Dagelf

Respuestas:

7

Por cierto, debe intentar no usar el término "memoria". Crea mucha confusión. Si quiere decir memoria física, diga "memoria física" o "RAM". Si te refieres a la memoria virtual, dilo. Si te refieres a la tienda de respaldo, dilo.

¿Por qué la memoria total utilizada es mucho mayor que la memoria utilizada por todos los procesos enumerados, sin importar cómo intente contarlos?

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

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

Porque ningún programa lo está usando. Considere, por ejemplo, la memoria que contiene el código para un programa que acaba de terminar. Ningún programa lo está usando. Pero esa memoria se usa, ya que no es gratuita y contiene datos que podrían ser útiles (en caso de que el programa se ejecute nuevamente).

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

No es utilizado por procesos.

¿Existe algún software que pueda brindar más información sobre la memoria utilizada?

RAMMap puede hacer esto.

Solo hay dos posibilidades, se puede usar RAM o se puede desperdiciar. Obviamente, el primero 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 "Lo quiero gratis ahora para poder usarlo más tarde", olvídalo. Puede usarlo ahora y usarlo más tarde.

¿Cómo podría matar un proceso que supuestamente solo usó unos pocos MB y liberar varios GB?

Se está quedando sin almacenamiento de respaldo, no con memoria física. Tiene mucha memoria física libre pero un almacenamiento de respaldo insuficiente para que el sistema operativo siga asignando memoria virtual que podría requerir respaldo.

El proceso solo estaba usando unos pocos MB de memoria física, pero el sistema operativo podría haber tenido que reservar varios GB de memoria virtual respaldada para ello. Por ejemplo, suponga que un proceso crea una asignación de memoria privada grabable de un archivo de 2GB. El sistema operativo debe reservar 2 GB de memoria virtual respaldada para el proceso, ya que podría escribir en cada byte de esa asignación. Además, es posible que nunca les escriba a ninguno de ellos. Es por eso que necesita un archivo de paginación de buen tamaño.

Los sistemas operativos modernos escriben muchos cheques (prometedor almacén de respaldo) que nunca se cobrarán (requieren RAM). No puede seguir emitiendo cheques (tienda de respaldo prometedor) incluso si tiene mucho dinero en el banco (RAM libre) si ya ha emitido un montón de cheques grandes que podrían o no cobrar (prometió tanta tienda de respaldo ya que tienes). Los archivos de paginación agregan un almacén de respaldo, lo que permite al sistema operativo seguir escribiendo cheques.

David Schwartz
fuente
14
PD: Estoy usando la palabra "memoria" no porque no sepa la diferencia entre RAM y VM, sino porque mi computadora solo me dice que no tiene "memoria" sin darme ninguna información de lo que realmente es medio. (Supongo que significa RAM, por las razones que especifiqué en el comentario anterior, pero no estoy seguro). Prefiero que uses el vocabulario real (que puedo consultar si es necesario) que las metáforas financieras elaboradas :)
Josh
9191
-1 porque después de leer la respuesta y todos los comentarios, todavía no está claro por qué la memoria total utilizada es mucho mayor que la memoria utilizada por todos los procesos enumerados.
Bennett McElwee
66
Esa terminología, donde la memoria se "usa" a pesar de que ningún programa la está usando, es muy diferente del significado normal de palabras como "usado" y "gratis", tal vez es la terminología de Microsoft, no la suya. De todos modos, supongamos, por ejemplo, que el 50% de la RAM es utilizada actualmente por los programas en ejecución, y el 25% no es utilizado por ningún programa en ejecución, pero contiene datos que podrían ser útiles en el futuro, pero que también pueden descartarse. Agregarlos y mostrar "Memoria: 75%" no transmite información útil para el usuario. Creo que de ahí viene la confusión generalizada.
Bennett McElwee
2
@BennettMcElwee No hay una buena manera de reducir el uso de memoria a un número simple, pero los usuarios insisten en ello. Esto coloca a los desarrolladores en una posición incómoda: pueden proporcionar un número que no siempre es útil o no proporcionan ningún número. La mayoría de los desarrolladores de SO y GUI eligen la primera opción: proporcionan un número que genera mucha confusión. Si su pregunta es "si más RAM haría que mi sistema funcionara mejor", la respuesta es: es muy, muy difícil de decir, incluso para los expertos.
David Schwartz
2
@DavidSchwartz Su respuesta no explica eso, simplemente lo dice. ¿Puede proporcionar algún enlace para respaldar ese reclamo específico? Estoy interpretando que "Memoria física XX%" significa que el XX% de la RAM instalada físicamente se está utilizando actualmente y no está disponible para otros procesos. Creo que estoy validado por el hecho de que por encima del 90% el sistema se vuelve propenso a bloqueos, y cuando las aplicaciones intentan asignar memoria más allá del 100%, se bloquean por completo. En mi experiencia, este no es el régimen estándar donde opera la mayoría de los sistemas.
John Neuhaus