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: · Go Komura · 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.
- 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.
- 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
- 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.
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
flowchart LR
accTitle: Las tres listas de páginas que componen Available
accDescr: La memoria física disponible es la suma de Standby, Free y Zeroed, y no incluye las páginas Active referenciadas desde el Working Set
standby["Standby (candidato reutilizable que conserva el contenido)"] --> avail["Available (memoria física disponible)"]
free["Free (libre sin poner a cero)"] --> avail
zeroed["Zeroed (libre puesto a cero)"] --> avail
active["Active (referenciado en el Working Set)"] -.->|No se incluye| avail
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.
flowchart TB
accTitle: Ruta de reescritura de una página modificada
accDescr: Una 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 contenido
dirty["Página modificada que sale del Working Set"] --> modified["Espera la reescritura en la lista Modified"]
modified -->|"Página privada (con archivo de paginación configurado)"| mpw["Modified Page Writer escribe en el archivo de paginación"]
modified -->|Página de un archivo asignado| mapped["Mapped Page Writer u otro reescribe en el archivo correspondiente"]
mpw --> standby["Tras terminar la reescritura, a Standby conservando el contenido"]
mapped --> standby
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.
flowchart LR
accTitle: Los tres papeles del archivo de paginación
accDescr: El 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 sistema
pagefile["Archivo de paginación"] --> limit["Ampliar el Commit Limit (margen en el lado del tope)"]
pagefile --> backing["Almacén de respaldo de las páginas privadas modificadas"]
pagefile --> dump["Receptá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
- El System Commit Charge en el pico
- 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 BytesMemory\\Commit LimitMemory\\% Committed Bytes In UseMemory\\Modified Page List BytesPaging File(*)\\% UsageMemory\\Available MBytesMemory\\Page Reads/secMemory\\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
- Lea una vez un archivo local bastante grande.
- 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.
- 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 BytesMemory\\Commit LimitMemory\\Available MBytesMemory\\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
- Interioridades de la memoria de Windows (parte 1) — El instante en que una dirección virtual se convierte en RAM física
- Qué representa realmente el “uso de memoria” de Windows
- Interioridades de la E/S de Windows (parte 4) — Cache Manager y WriteFile
- Introducción a la recogida de volcados de memoria de aplicaciones Windows
- Process Explorer / Handle / VMMap en la práctica
Á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.
- Desarrollo de aplicaciones Windows
- Investigación de fallos y análisis de causas
- Aprovechamiento de activos existentes y apoyo a la migración
- Contacto
Referencias
-
Microsoft Learn, MEMORYSTATUSEX structure. Sobre que
ullAvailPhyses 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 -
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
-
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
-
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
-
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. ↩
-
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. ↩
-
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
-
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
-
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. ↩
-
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
-
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 Compressioncon otro PID. ↩ -
Microsoft Learn, Testlimit - Sysinternals. Sobre la sintaxis oficial de Testlimit v5.24:
-mreserva memoria,-dreserva y hace Touch,-ees el intervalo de asignación,-ces el número de asignaciones, y-cse indica al final. ↩
Artículos relacionados
Artículos recientes con las mismas etiquetas para profundizar en temas cercanos.
¿Qué representa el «uso de memoria» de Windows? — Cómo leer Working Set, Private Bytes, Commit y el archivo de paginación
La memoria del Administrador de tareas, Working Set, Private Bytes y Commit no son el mismo valor. Se explica la relación entre memoria v...
Interioridades de la memoria de Windows (parte 3) — Objetos de sección y copia en escritura: qué son realmente las DLL y la asignación de archivos
Conecta objetos de sección, asignación de imagen y de datos, caché compartida y copia en escritura para explicar cómo las DLL y la memori...
Interioridades de la memoria de Windows (1.ª parte) — El instante en que una dirección virtual se convierte en RAM física: un Page Fault de principio a fin
Une VirtualAlloc, VAD, tablas de páginas, TLB, demand-zero y hard faults para explicar el instante en que una dirección virtual se convie...
¿Cómo encuentra un acceso directo de Windows un archivo movido? — La ubicación de un archivo y su identidad son cosas distintas
¿Por qué un acceso directo sigue abriendo un archivo que ha movido? Windows puede encontrar el destino mediante identificadores de seguim...
¿Sigue siendo necesario «quitar el USB de forma segura»? — Pensarlo desde la extracción rápida y la caché de escritura
¿Puede retirar la memoria USB en cuanto termina la copia? La caché de escritura, Extracción rápida frente a Mejor rendimiento, cómo compr...
Temas relacionados
Estas páginas sitúan el tema en un contexto más amplio de servicios y decisiones.
Temas técnicos de Windows
Portal sobre desarrollo de Windows, investigación de fallos y aprovechamiento de activos existentes.
Servicios relacionados con este tema
El artículo está directamente relacionado con los siguientes servicios.
Desarrollo de aplicaciones para Windows
Aplicaciones empresariales, integración de dispositivos y herramientas de comunicación, de los requisitos al desarrollo.
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.