Interioridades de la memoria de Windows (parte 2) — La vida de una página física: las cinco listas y la verdad del archivo de paginación

· Actualizado el: · · Windows, Gestión de memoria, Archivo de paginación, Working Set, Standby, RAMMap, Supervisión del rendimiento

Historial de revisiones (primera versión, publicada el 20 Aug 2026)
Primera publicación
Citar este artículo(DOI (archivo registrado): 10.5281/zenodo.22176104)

Los DOI siguientes remiten a versiones ya archivadas y pueden diferir del texto actual. Para citar el texto actual, utilice la URL de esta página.

Go Komura (2026). Interioridades de la memoria de Windows (parte 2) — La vida de una página física: las cinco listas y la verdad del archivo de paginación. KomuraSoft LLC. https://comcomponent.com/es/blog/windows-memory-internals-page-lifecycle-pagefile/

DOI (archivo registrado)
10.5281/zenodo.22176104
DOI (última versión registrada)
10.5281/zenodo.22279022

«El Working Set bajó. Entonces, ¿esa página ya no está en la RAM?». En la parte 2 seguimos esta duda desde el lado de la página física.

En la entrega anterior, «Interioridades de la memoria de Windows (parte 1) — El instante en que una dirección virtual se convierte en RAM física», vimos el proceso hasta obtener una página física en el primer acceso a una página con Commit. Aunque salga del Working Set, esa página no tiene por qué desaparecer de inmediato ni pasar de inmediato al archivo de paginación.

Una página que no ha sido modificada puede pasar a Standby conservando su contenido. Una página modificada espera primero la reescritura en Modified. Al reutilizarse, a veces pasa por Free o Zeroed, y si se vuelve a necesitar el mismo contenido, también puede volver desde Standby con un error de página leve.

Este artículo es una explicación que, tomando como eje la base de datos PFN, une los estados Active, Modified, Standby, Free y Zeroed de una sola página física. Para leer las cifras se da por sentado el artículo introductorio «Qué representa realmente el “uso de memoria” de Windows».

«Interioridades de la memoria de Windows»: las 3 partes

Esta serie avanza en el orden obtener una página física → seguir el flujo de residencia y recuperación → entender la compartición y la privatización.

Parte Tema Lo que sigue esta parte
Parte 1 Direcciones virtuales y errores de página Cuándo una región de VirtualAlloc obtiene RAM física
Parte 2 (este artículo) La vida de una página física Las transiciones de estado de una página que sale del Working Set y el papel del archivo de paginación
Parte 3 Objetos de sección y copia en escritura Cómo las DLL, la asignación de archivos y la memoria compartida comparten páginas físicas

La pregunta a la que responde la parte 2 es una sola.

Una página física que sale del Working Set, ¿desaparece, va al disco o permanece en la RAM?

Antes de empezar Contenido
Público Desarrolladores y responsables de operación que quieren entender, desde el mecanismo, la relación entre Available y Standby, el comportamiento tras el recorte del Working Set, la configuración del archivo de paginación y la compresión de memoria
Entorno previsto Windows 10/11 o una versión actual de Windows Server
Conocimientos previos Fundamentos de Working Set, Commit y errores de página leves/graves
Dificultad Intermedio. Se usan términos internos como PFN y listas de páginas

Aunque no se use un depurador de kernel, se explica sobre todo el alcance que se puede observar con RAMMap y PerfMon.

En el diagrama, una línea continua marca una relación que siempre se cumple y una línea discontinua una relación condicional (las condiciones están en la explicación de cada relación en la página de detalle). La lista completa de relaciones (18 en total, con evidencia y grado de certeza) y las definiciones de los conceptos principales están reunidas en la página de detalle del mapa de conocimiento (en japonés). Datos: JSON-LD / Turtle

1. Primero la conclusión

El destino de una página física se ordena en estos tres puntos.

  1. Sacar del Working Set y perder el contenido son cosas distintas. Una página clean permanece en Standby y, si se necesita el mismo contenido, puede volver sin leer el disco. Una página modificada se reutiliza después de dejar el contenido en un estado en el que se puede conservar, por ejemplo en el archivo de paginación o en el archivo correspondiente.
  2. Standby es a la vez caché y Available. Conserva el contenido anterior, pero si hace falta para otro fin se puede reutilizar. Available incluye Standby, Free y Zeroed.1
  3. El archivo de paginación no solo es destino de escritura: también sostiene el Commit y el volcado. La escritura no es un proceso por lotes que empieza cuando la RAM se agota por completo; avanza en segundo plano según la lista Modified y la presión de memoria. Deshabilitarlo no corrige una fuga y puede reducir el Commit Limit, las opciones de reutilizar RAM y la capacidad de obtener un volcado.234

En una frase: Windows, antes de descartar una página, comprueba la posibilidad de que se vuelva a necesitar y el lugar desde el que se puede restaurar el contenido original.

Lo que se quiere saber Apartados que leer
Adónde va una página que sale del Working Set Apartados 2 a 6
Diferencias entre Standby, Free, Zeroed y la compresión Apartados 7 a 8
Decidir si hace falta el archivo de paginación y su tamaño Apartados 9 a 10
Comprobarlo con RAMMap o Testlimit Apartados 11 a 12

2. La base de datos PFN — El libro mayor del lado de la RAM física

El PTE que vimos en la parte 1 representaba la conversión de una página virtual a una página física. El libro mayor que mira esto desde el lado de la página física y sigue «para qué se usa ahora esta página de RAM» es la base de datos PFN. PFN es la abreviatura de Page Frame Number, la numeración de la RAM física por páginas.

Una entrada PFN sigue, en lo conceptual, esta información.

  • El estado actual de la página física
  • El número de referencias o de compartición
  • El PTE correspondiente
  • Si está modificada
  • A qué lista de páginas pertenece
  • Información relacionada con el nodo NUMA y la prioridad

Se elige la visualización de la herramienta según la granularidad que se quiere ver. Con WinDbg y RAMMap se puede comprobar así.567

Lo que se quiere comprobar Visualización o comando
Información de un PFN concreto !pfn de WinDbg
Uso de la memoria física y totales de las listas de páginas !memusage de WinDbg
Uso y listas de páginas Use Counts de RAMMap
Standby por prioridad Priority Summary de RAMMap
Uso por página Physical Pages de RAMMap

Con RAMMap se puede observar sin usar un depurador de kernel.

3. Unir los cinco estados en un solo recuadro

Aquí se simplifica el flujo de la página física a cinco estados. Primero se lee separando «si se puede usar ahora», «si conserva el contenido» y «si hace falta preparación antes de reutilizar».

Estado Cómo se entiende en esta parte
Active / Valid Referenciado desde el Working Set u otro, a través de un PTE válido
Modified Modificado, a la espera de reescritura
Standby Candidato reutilizable que conserva el contenido anterior
Free Asignable, pero puede quedar una secuencia de bits antigua
Zeroed Puesto a cero y entregable como página nueva de modo usuario

Este no es un diagrama que enumere todos los estados. El Windows actual también tiene Standby por prioridad, Transition, Bad y otros. Además, Active no es tanto una «lista Active» única como el estado de estar referenciado a través de un PTE válido. Conservando esta distinción, se usa como diagrama para seguir el comportamiento de memoria de una aplicación.

Diagrama simplificado del movimiento de una página física de Windows entre Active, Modified, Standby, Free y Zeroed

Figura 1: Una página referenciada en el Working Set pasa a Standby si está clean y a Modified si está dirty. Si el contenido es el mismo, vuelve; si es para otro fin, se reutiliza de forma directa o pasa por Free/Zeroed para una asignación que necesita ceros.

Fuente Mermaid de la figura 1
flowchart LR
    zeroed["Zeroed\nPuesto a cero"] -->|Primer Touch| active["Active / Valid\nReferenciado en el Working Set"]
    active -->|Recortar clean| standby["Standby\nCandidato reutilizable que conserva el contenido"]
    active -->|Recortar dirty| modified["Modified\nA la espera de reescritura"]
    modified -->|Reescritura terminada| standby
    standby -->|Volver con error de página leve| active
    standby -->|Descartar la identificación antigua| free["Free\nSin poner a cero"]
    standby -->|Reutilizar de forma directa para otro fin| active
    free -->|Para una asignación que necesita ceros| zeroed

Lo que hay que fijar en el diagrama son estos dos puntos.

Aunque salga del Working Set, no tiene por qué perder el contenido. Si se vuelve a necesitar el mismo contenido, se puede volver a la página que queda.

Al reutilizarla para otro fin, no siempre pasa por Free/Zeroed en ese orden. Si se entrega al modo usuario como una página privada nueva de demand-zero, hay que borrar el contenido antiguo. En cambio, si el uso sobrescribe la página entera, como destino de lectura de un archivo, se puede reutilizar de forma directa quitando la identificación de Standby.

4. Active / Valid — La página física a la que se puede hacer referencia ahora

Una página Active/Valid está referenciada desde el Working Set de un proceso o desde el espacio del sistema a través de un PTE válido. La CPU puede llegar con la conversión de direcciones habitual, así que ese acceso en sí no necesita un error de página.

Sin embargo, no hay garantía de que la página siga siendo Active. Para mantener memoria disponible, el administrador de memoria recorta páginas candidatas mirando el tamaño del Working Set y el uso reciente de la página. La explicación de Working Set de Microsoft también indica que el administrador de memoria elimina páginas del Working Set para crear memoria disponible.8

4.1. Recortar no es liberar

Lo que cambia con el recorte del Working Set es, sobre todo, el estado de residencia al que se puede hacer referencia de inmediato con un PTE válido. Distinga estos cuatro como sucesos distintos.

  • Sacar del Working Set
  • Liberar Commit
  • Liberar un intervalo de direcciones virtuales
  • Perder los datos originales

Aunque se ejecute EmptyWorkingSet o «Trim Working Set» de una herramienta, no sustituye a VirtualFree ni a la liberación del montón. Si se vuelve a tocar la misma página, vuelve con un error de página leve desde Standby o con un error de página grave desde el almacén de respaldo. Por tanto, «pude reducir el Working Set» no significa «corregí una fuga».

5. Una página clean va a Standby

Aunque una página salga del Working Set, si el contenido coincide con el archivo original o ya tiene un almacén de respaldo seguro, se puede colocar en Standby. Ejemplos representativos:

  • Código de EXE/DLL no modificado
  • Un archivo asignado en memoria no modificado
  • Una página privada ya reescrita
  • Datos que quedan en la caché de archivos

¿Volver al mismo contenido o destinarla a otro fin?

Una página Standby conserva la correspondencia con el contenido anterior. Cuando el mismo proceso u otro necesita ese contenido, si aún no se ha reutilizado, se puede devolver solo con un error de página leve que vuelve a conectar el PTE.

Por otro lado, si otra asignación necesita la página física, se puede descartar la identificación antigua de Standby y reutilizarla. Si el destino de reutilización es una página privada de modo usuario que necesita inicialización a cero, se prepara Zeroed; si el uso sobrescribe la página entera con contenido de archivo, se puede reasignar de forma directa sin poner a cero.

Esta doble cara es precisamente la razón de que Standby sea caché y también Available.

5.1. Por qué Available incluye Standby

MEMORYSTATUSEX.ullAvailPhys representa la memoria física que se puede reutilizar de inmediato sin escribir en disco, y es la suma de Standby, Free y Zeroed.1

Las tres listas de páginas que componen AvailableLa memoria física disponible es la suma de Standby, Free y Zeroed, y no incluye las páginas Active referenciadas desde el Working SetNo se incluyeStandby (candidato reutilizable que conserva el contenido)Available (memoria física disponible)Free (libre sin poner a cero)Zeroed (libre puesto a cero)Active (referenciado en el Working Set)

Figura 2: Available es la suma de Standby, Free y Zeroed. Standby, que conserva el contenido, también se cuenta como «disponible».

Por tanto, una visualización del Administrador de tareas del tipo «hay poco Free, mucho Cached/Standby y Available suficiente» no es una contradicción.

Windows no deja RAM libre abandonada; deja en Standby archivos y código usados hace poco. La operación es responder como caché al mismo contenido y reutilizar si hace falta para otro fin.

No juzgue «hay poco Free, así que de inmediato falta memoria»; mire juntos Available, Commit, los errores de página graves y el retraso del procesamiento.

6. Una página dirty espera en Modified

Cuando una aplicación escribe en una página, ese contenido deja de coincidir con el almacén de respaldo original. Si se sobrescribe esa página dirty tal cual para otro fin, se pierden los datos. Por eso, una página modificada que sale del Working Set espera la reescritura en Modified.

El destino de reescritura cambia según el tipo de página.

Tipo de página Destino de reescritura representativo
Página privada con Commit Archivo de paginación
Archivo asignado con permiso de escritura El archivo de datos correspondiente
Datos dirty de la caché de archivos El archivo de datos correspondiente
Página clean de EXE/DLL No hace falta reescritura. Se puede releer de la imagen original

La explicación del archivo de paginación de Microsoft también indica que los .dll, .exe y archivos habituales que ya existen en disco no hace falta escribirlos de nuevo en el archivo de paginación, y que el candidato al archivo de paginación es precisamente el dato modificado que no tiene una copia original en disco.3

6.1. Modified Page Writer

Modified Page Writer es un trabajador del sistema que recorre las páginas dirty respaldadas por el archivo de paginación que sigue el administrador de memoria y las escribe en el archivo de paginación.4 En el lado de los archivos asignados hay rutas como Mapped Page Writer, que reescriben en el archivo correspondiente coordinándose con el sistema de archivos y Cache Manager.

La escritura no es un modo de «no hacer nada hasta que la RAM llegue a 0 bytes». Según la lista Modified, Available y el estado del archivo de paginación, prepara en segundo plano páginas que se podrán reutilizar más adelante.

Cuando termina la reescritura y no hay otras referencias válidas, la página avanza a Standby conservando el contenido.

Ruta de reescritura de una página modificadaUna página modificada que sale del Working Set espera en la lista Modified; si es privada y el archivo de paginación está configurado, Modified Page Writer la escribe en el archivo de paginación; si es de un archivo asignado, Mapped Page Writer u otro la reescribe en el archivo de datos correspondiente, y al terminar avanza a Standby conservando el contenidoPágina privada (con archivo de paginación configurado)Página de un archivo asignadoPágina modificada que sale del Working SetEspera la reescritura en la lista ModifiedModified Page Writer escribe en el archivo de paginaciónMapped Page Writer u otro reescribe en el archivo correspondienteTras terminar la reescritura, a Standby conservando el contenido

Figura 3: El destino de reescritura lo decide el tipo de página, y ambas rutas avanzan en segundo plano. En un sistema con el archivo de paginación deshabilitado no hay destino de reescritura para las páginas privadas, así que las páginas privadas modificadas siguen en la RAM.

6.2. Separar la salida de páginas de la E/S propia del archivo de paginación

Los contadores se leen separando el número de E/S y el número de páginas.

Contador Lo que cuenta
Memory\\Page Writes/sec Número de E/S de escritura de paginación emitidas para liberar memoria física
Memory\\Pages Output/sec Número de páginas enviadas a disco en esas escrituras
Memory\\Page Reads/sec Número de E/S de lectura de disco emitidas para resolver un error de página grave
Memory\\Pages Input/sec Número de páginas que entraron en la RAM en esas lecturas

Otra distinción es que la E/S de paginación y la E/S propia del archivo de paginación no son lo mismo.

Page Writes/sec y Pages Output/sec también pueden aumentar en la ruta que reescribe páginas dirty de archivos asignados y similares. El lado de entrada tampoco distingue archivo de paginación, DLL, EXE y archivo asignado en memoria.3

Para identificar la E/S propia de pagefile.sys, no se estime solo con estos cuatro contadores; se registran File I/O y Disk I/O con ETW/WPA. Se hace corresponder FileObject y FileName y se confirma el archivo de destino.9

Un añadido más: escribir antes en el archivo de paginación no significa releer de inmediato desde el disco. Si no se accede, se puede sacar de la RAM la página ya reescrita y destinar la memoria física a páginas que se usan con más frecuencia.

7. Diferencias entre Standby, Free y Zeroed

7.1. Standby

Estado que conserva la correspondencia con el contenido anterior.

  • Si se necesita el mismo contenido, se puede devolver con un error de página leve
  • Si se necesita para otro fin, se puede descartar la identificación antigua y reutilizar
  • Hay listas Standby por prioridad

7.2. Free

Se ha perdido la correspondencia válida con el contenido anterior y es asignable. Sin embargo, dentro de la página puede quedar una secuencia de bits antigua. Si se entrega tal cual al modo usuario, hay riesgo de filtrar información del proceso anterior.

7.3. Zeroed

El contenido es cero y se puede entregar con seguridad como página nueva de modo usuario. El error de página de demand-zero de la parte 1 era el ejemplo representativo de obtener una página Zeroed disponible y unirla a un PTE. La preparación de Free a Zeroed se hace según la demanda y el estado del sistema.

Es decir, «Free» y «Zeroed» parecen ambos libres, pero el estado de preparación de seguridad es distinto.

8. El almacén de compresión de memoria — Crear otro destino dentro de la RAM

El administrador de memoria de Windows 10 en adelante, cuando hay presión de memoria, a veces puede comprimir en la RAM las páginas de baja frecuencia de uso en lugar de escribirlas de inmediato en disco. Ese conjunto de páginas comprimidas es el compression store.

8.1. Dónde ver la cantidad comprimida

En la implementación inicial de Windows 10, el almacén de compresión se contabilizaba dentro del Working Set del proceso System, pero en el Windows actual aparece en la lista de procesos de las herramientas de depuración como un proceso dedicado Memory Compression. Por tanto, al investigar la cantidad comprimida actual no hay que seguir solo el Working Set del proceso System. El objetivo en sí de mantener más aplicaciones en memoria física y reducir la E/S de disco no ha cambiado.1011

8.2. La compresión también tiene coste y no hay un orden fijo

Sin embargo, conviene fijar estos puntos.

  • Las páginas comprimidas también usan RAM
  • Comprimir y expandir tiene coste de CPU
  • Aunque se comprima, la promesa de Commit no desaparece
  • No hay un orden fijo de «siempre comprimir y después el archivo de paginación»
  • La política cambia según el tipo de página, la presión y el historial de acceso

El «en uso (comprimido)» del Administrador de tareas no significa que la memoria física haya quedado del todo libre por la compresión. El almacén de compresión no es una función que haga innecesario el archivo de paginación, sino que añade entre la RAM y el almacenamiento una opción que usa CPU para reducir E/S.

9. El verdadero papel del archivo de paginación

El archivo de paginación tiene al menos tres papeles.

Los tres papeles del archivo de paginaciónEl archivo de paginación amplía el Commit Limit, es el almacén de respaldo de las páginas privadas modificadas de baja frecuencia de acceso y es el receptáculo del volcado de memoria del sistemaArchivo de paginaciónAmpliar el Commit Limit (margen en el lado del tope)Almacén de respaldo de las páginas privadas modificadasReceptáculo del volcado de memoria del sistema

Figura 4: El papel del archivo de paginación no es solo «RAM lenta». Aunque el uso sea 0, sostiene el tope y el volcado.

9.1. Ampliar el Commit Limit

El Commit Limit del sistema se decide, a grandes rasgos, por la suma de la RAM y de todos los archivos de paginación. Si se elimina el archivo de paginación, el Commit Limit baja hasta un nivel un poco menor que la RAM instalada. Cuando Commit Total llega al tope, el Commit nuevo falla y puede llevar a la finalización anómala de una aplicación o a un mal funcionamiento del sistema.2

Esto es distinto de «cuántos GB se están escribiendo ahora en pagefile.sys». El archivo de paginación es también el margen del lado del tope que sostiene la promesa del Commit.

9.2. Sostener las páginas privadas modificadas

Si se sostienen con el archivo de paginación las páginas privadas modificadas de baja frecuencia de acceso, se puede sacar esa página física de la RAM y destinarla a código o datos que se usan con frecuencia.2 Si se deshabilita el archivo de paginación, se reducen las opciones de sacar esas páginas de la RAM. No se puede decir de forma simple «como no hay page-out, es más rápido».

9.3. Sostener el volcado de memoria del sistema

Para crear Memory.dmp en un bloqueo del sistema hace falta un archivo de paginación o un archivo de volcado dedicado que pueda sostener el modo de volcado elegido.3 La cantidad necesaria difiere entre un volcado de memoria completo, un volcado de memoria del kernel y un volcado de memoria automático.

En un entorno donde se investigan bloqueos, si se elimina el archivo de paginación solo para ahorrar capacidad, puede que no quede evidencia precisamente cuando más se necesita. El modo de recogida también se trata en «Introducción a la recogida de volcados de memoria de aplicaciones Windows».

10. El tamaño adecuado no es uniforme

No se debe decidir el tamaño del archivo de paginación solo con una fórmula fija como «1,5 veces la RAM». Microsoft indica que el tamaño adecuado difiere por sistema en estos dos puntos y no se puede generalizar.3

  1. El System Commit Charge en el pico
  2. El volcado de memoria del sistema necesario

En la práctica, se piensa en este orden.

10.1. Tomar primero como base la administración del sistema

El valor predeterminado de Windows es la administración del sistema. Aumenta y disminuye según la RAM instalada, la demanda de Commit, los requisitos de volcado de memoria y similares. Si no hay una restricción especial ni un resultado de medición, empezar por aquí es lo más seguro.

10.2. Medir el Commit de pico con una carga representativa

Con PerfMon se recogen durante un periodo largo estos contadores.

  • Memory\\Committed Bytes
  • Memory\\Commit Limit
  • Memory\\% Committed Bytes In Use
  • Memory\\Modified Page List Bytes
  • Paging File(*)\\% Usage
  • Memory\\Available MBytes
  • Memory\\Page Reads/sec
  • Memory\\Page Writes/sec

En el periodo de recogida incluya picos reales, como el cierre de mes, copias de seguridad, compilaciones y uso simultáneo de varios usuarios.

Un uso alto del archivo de paginación por sí solo no permite afirmar un problema de rendimiento de almacenamiento. Sin embargo, un estado pegado al tope es una advertencia de falta de capacidad. Se mira junto si el Commit se acerca al tope, si Modified espera en gran cantidad y si el disco está saturado.3

10.3. Decidir primero los requisitos de volcado

Se decide si hace falta un volcado de memoria completo, si basta un volcado de memoria del kernel o si se usa un archivo de volcado dedicado. Si se cambia a un tamaño fijo, hay que cumplir no solo el Commit de pico, sino también los requisitos de volcado.

11. Comprobarlo con los propios ojos

11.1. Ver las listas de páginas con RAMMap

Inicie RAMMap como administrador y abra primero Use Counts.7 Los elementos que mirar son estos.

  • Active
  • Standby
  • Modified
  • Modified no write
  • Free
  • Zeroed

En Priority Summary se puede confirmar que Standby está dividido por prioridad. En Processes se sigue el Working Set de cada proceso, y en File Summary y File Details, los datos de archivo que hay en la RAM.

Leer el mismo archivo dos veces y ver las páginas que quedan

  1. Lea una vez un archivo local bastante grande.
  2. Termine el procesamiento de lectura y haga Refresh de RAMMap. En File Summary o en el lado Standby a veces quedan páginas de ese archivo.
  3. Lea el mismo archivo otra vez. Las páginas que aún no se han reutilizado pueden volver sin E/S de disco, o con poca E/S.

El resultado cambia con la presión de memoria, el antivirus y el tamaño del archivo. Más que un número de una sola vez, mire la dirección de la transición de estado.

No use Empty como operación de mejora de rendimiento en una máquina de producción

Además, el menú Empty de RAMMap cambia el estado del sistema de forma artificial. No borre Standby como operación de mejora de rendimiento en una máquina de producción; úselo solo en un entorno de verificación aislado.

11.2. Separar Commit y Touch con Testlimit

Testlimit es una herramienta de Sysinternals que simula la falta de recursos de memoria, identificadores, procesos, subprocesos y similares. Primero ejecute lo siguiente con el binario de su equipo y confirme la versión y el usage que se muestran.

.\\testlimit64.exe -?

Confirmar la versión y la sintaxis y después probar

Lo siguiente se dirige a Testlimit v5.24. En la sintaxis oficial de v5.24, -m [MB] reserva la cantidad indicada de memoria, -d [MB] reserva y hace Touch, -e [seconds] es el intervalo de asignación y -c [count] es el número de asignaciones. -c se indica al final. Si lo que muestra su equipo es distinto, priorice ese usage.12

A continuación, se prueba en pequeño en una máquina virtual desechable.

# -m 64: reserva 64 MiB, -e 1: intervalo de 1 segundo, -c 8: se detiene a las 8 veces
.\\testlimit64.exe -m 64 -e 1 -c 8

# Las mismas veces e intervalo, y con -d se hace Touch de cada región
.\\testlimit64.exe -d 64 -e 1 -c 8

Durante la ejecución se registran a la vez estos.

  • «Confirmado X/Y» del Administrador de tareas
  • Active, Modified, Standby de RAMMap
  • Memory\\Committed Bytes
  • Memory\\Commit Limit
  • Memory\\Available MBytes
  • Memory\\Modified Page List Bytes

Reproducir el agotamiento solo en una máquina virtual de la que se haya tomado una instantánea

Si se va a reproducir de verdad el agotamiento de Commit, no lo haga en el PC anfitrión; aumente las veces por etapas en una máquina virtual de la que se haya tomado una instantánea. Una ejecución que reserve de forma automática hasta el tope puede provocar parada de pantalla, finalización anómala de procesos y pérdida de registros. El objetivo no es inestabilizar el SO, sino observar que al acercarse al Commit Limit el Commit nuevo falla.

12. Cuatro lecturas erróneas que conviene evitar en la práctica

12.1. «Hay mucho Standby, así que hay una fuga de memoria»

Standby es una caché reutilizable y está incluida en Available. Una fuga se juzga por si la línea de base del Commit propio del proceso y el desglose de asignaciones siguen aumentando después de terminar la carga.

12.2. «Si recorto el Working Set, se corrige la fuga»

El recorte solo cambia el estado de residencia; no libera Commit ni asignaciones virtuales. Si se vuelve a acceder, vuelve con un error de página.

12.3. «Si el uso del archivo de paginación es 0, no hace falta»

El archivo de paginación no solo sostiene la cantidad de escritura actual, sino también el Commit Limit y el volcado de memoria. Si se decide eliminarlo solo por el uso en un momento habitual, se pierde el margen en el pico y la evidencia en un incidente.

12.4. «Primero la compresión de memoria y después, siempre, el archivo de paginación»

La compresión no es una canalización en serie fija. Windows elige de forma dinámica según el tipo de página, la eficiencia de compresión, la carga de CPU, la presión de memoria y si hay almacén de respaldo.

13. Resumen

  • La base de datos PFN es el libro mayor que sigue la propiedad, las referencias, la modificación y el estado de lista de una página física.
  • Una página clean que sale del Working Set permanece en Standby y, si se necesita el mismo contenido, puede volver con un error de página leve.8
  • Una página dirty espera en Modified y, si es privada, se reescribe en el archivo de paginación; si es una página asignada, en el archivo correspondiente.4
  • Available es la suma de Standby, Free y Zeroed; que haya mucho Standby no es, en sí, falta de memoria.1
  • La compresión de memoria reduce la E/S comprimiendo páginas en la RAM, pero no elimina el papel del Commit y del archivo de paginación.10
  • El archivo de paginación sostiene el Commit Limit, las páginas privadas modificadas y el volcado de memoria del sistema.23
  • El tamaño adecuado lo deciden el Commit de pico y los requisitos de volcado, y no se puede decidir con un múltiplo uniforme.3
  • El recorte del Working Set y el borrado de Standby no son una corrección de fuga de memoria.

La continuación es la parte 3, «Objetos de sección y copia en escritura: qué son realmente las DLL y la asignación de archivos».

Seguiremos por qué las páginas de archivo y las DLL que quedan en Standby se ven como la misma página física desde varios procesos.

Artículos relacionados

Ámbitos de consulta relacionados

En KomuraSoft LLC tratamos la investigación de presión de memoria, agotamiento de Commit, paginación, aumento del Working Set y diseño de obtención de volcados de memoria en aplicaciones Windows.

Referencias

  1. Microsoft Learn, MEMORYSTATUSEX structure. Sobre que ullAvailPhys es la memoria física que se puede reutilizar de inmediato sin escribir en disco, y que es la suma de las listas Standby, Free y Zeroed. ↩ ↩2 ↩3

  2. Microsoft Learn, Introduction to page files. Sobre que el archivo de paginación saca de la RAM las páginas modificadas de baja frecuencia de acceso, amplía el Commit Limit y sostiene el volcado de memoria del sistema. ↩ ↩2 ↩3 ↩4

  3. Microsoft Learn, How to determine the appropriate page file size for 64-bit versions of Windows. Sobre que el tamaño adecuado depende del Commit de pico y de los requisitos de volcado de memoria y no se puede generalizar, y sobre la lista Modified, el uso del archivo de paginación, los contadores relacionados y el archivo de paginación administrado por el sistema. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8

  4. Microsoft Learn, Data corruption on IO write. Sobre que Modified Page Writer es un trabajador del sistema del administrador de memoria que recorre las páginas dirty respaldadas por el archivo de paginación y las escribe. ↩ ↩2 ↩3

  5. Microsoft Learn, !pfn (WinDbg). Sobre que se puede mostrar el estado, las referencias, la dirección del PTE y similares de la entrada PFN indicada. ↩

  6. Microsoft Learn, !memusage (WinDbg). Sobre que se puede totalizar el uso de la memoria física y estados de página como Zeroed, Free, Standby, Modified y Active. ↩

  7. Microsoft Learn, RAMMap - Sysinternals. Sobre que Use Counts, Processes, Priority Summary, Physical Pages, File Summary y File Details de RAMMap muestran el uso de la memoria física y las listas de páginas. ↩ ↩2

  8. Microsoft Learn, Working Set. Sobre que el administrador de memoria recorta el Working Set para crear memoria disponible, y que se pueden resolver con un error de página leve las páginas que quedan en Transition o en el Working Set de otro proceso. ↩ ↩2

  9. Microsoft Learn, FileIo_Name class. Sobre que los eventos File I/O de ETW tienen FileObject y FileName, y que al hacer corresponder FileObject con eventos Disk I/O se puede identificar la E/S del archivo de destino. ↩

  10. Windows Insider Blog, Announcing Windows 10 Insider Preview Build 10525. Sobre que la implementación inicial del compression store de Windows 10 colocaba el conjunto de páginas comprimidas en la RAM en el Working Set del proceso System y reducía la escritura en disco. ↩ ↩2

  11. Microsoft Learn, Find Process ID (PID) in Windows. Sobre que en el ejemplo de lista de procesos de las Debugging Tools for Windows actuales, bajo System aparece un proceso Memory Compression con otro PID. ↩

  12. Microsoft Learn, Testlimit - Sysinternals. Sobre la sintaxis oficial de Testlimit v5.24: -m reserva memoria, -d reserva y hace Touch, -e es el intervalo de asignación, -c es el número de asignaciones, y -c se indica al final. ↩

Artículos recientes con las mismas etiquetas para profundizar en temas cercanos.

Estas páginas sitúan el tema en un contexto más amplio de servicios y decisiones.

El artículo está directamente relacionado con los siguientes servicios.

Preguntas frecuentes

Preguntas habituales en las consultas sobre el tema del artículo.

¿Una página que sale del Working Set se escribe de inmediato en el archivo de paginación?
No. Las páginas que no han sido modificadas pasan a Standby conservando su contenido y se convierten en una caché lista para reutilizarse de inmediato. Las páginas modificadas pasan a Modified y, cuando es necesario, se escriben de vuelta en el archivo de paginación o en el archivo correspondiente antes de avanzar a un estado reutilizable como Standby.
¿La memoria disponible (Available) del Administrador de tareas incluye la memoria de Standby?
Sí. La memoria física disponible que informa Windows es la suma de Standby, Free y Zeroed. Standby conserva contenido antiguo, pero como puede reutilizarse de inmediato para otro fin si es necesario, se cuenta como memoria disponible.
¿La escritura en el archivo de paginación empieza solo cuando la RAM se agota por completo?
No. Windows escribe de vuelta en segundo plano las páginas modificadas de baja frecuencia de acceso, según el estado de la lista Modified y de la memoria disponible. No es un mecanismo simple que espere el agotamiento absoluto para desalojar todo de una vez.
¿Deshabilitar el archivo de paginación hace que Windows sea más rápido?
En general, no se puede afirmar que sea más rápido. Deshabilitarlo reduce el Commit Limit, dificulta sacar de la RAM las páginas modificadas de baja frecuencia de acceso y también afecta al volcado de memoria del sistema. Normalmente conviene dejarlo administrado por el sistema y decidir midiendo el Commit máximo y los requisitos de volcado.
¿Con la compresión de memoria ya no hace falta el archivo de paginación?
No deja de ser necesario. El almacén de compresión reduce la E/S comprimiendo páginas dentro de la RAM, pero las páginas comprimidas también usan memoria física y no sustituyen la garantía del Commit. La elección entre comprimir y enviar a disco es una política dinámica del administrador de memoria.

Perfil del autor

Página de presentación del autor del artículo.

Go Komura

Representante de KomuraSoft LLC

Especializado en desarrollo de software para Windows, consultoría técnica e investigación de fallos, sobre todo en proyectos con sistemas existentes y errores difíciles de reproducir.

Volver al blog