Montón de fragmentación baja
[La información de este tema se aplica a Windows Server 2003 y Windows XP. A partir de Windows Vista, el sistema usa el montón de fragmentación baja (LFH) según sea necesario para atender las solicitudes de asignación de memoria. Las aplicaciones no necesitan habilitar el LFH para sus montones.]
La fragmentación del montón es un estado en el que la memoria disponible se divide en bloques pequeños y no contiguos. Cuando se fragmenta un montón, la asignación de memoria puede producir un error incluso cuando el total de memoria disponible en el montón es suficiente para satisfacer una solicitud, ya que ningún bloque de memoria es lo suficientemente grande. El montón de fragmentación baja (LFH) ayuda a reducir la fragmentación del montón.
El LFH no es un montón independiente. En su lugar, es una directiva que las aplicaciones pueden habilitar para sus montones. Cuando se habilita el LFH, el sistema asigna memoria en determinados tamaños predeterminados. Cuando una aplicación solicita una asignación de memoria de un montón que tiene habilitado el LFH, el sistema asigna el bloque de memoria más pequeño que es lo suficientemente grande como para contener el tamaño solicitado. En la implementación actual, el sistema no usa el LFH para las asignaciones de más de 16 KB aproximadamente, independientemente de si el LFH está habilitado o no.
Una aplicación debe habilitar el LFH solo para el montón predeterminado del proceso de llamada o para los montones privados que la aplicación ha creado. Para habilitar el LFH para un montón, use la función GetProcessHeap para obtener un identificador para el montón predeterminado del proceso de llamada o use el identificador para un montón privado creado por la función HeapCreate . A continuación, llame a la función HeapSetInformation con el identificador .
El LFH no se puede habilitar para los montones creados con HEAP_NO_SERIALIZE o para montones creados con un tamaño fijo. El LFH tampoco se puede habilitar si usa las herramientas de depuración del montón en Herramientas de depuración para Windows o Comprobador de aplicaciones.
Después de habilitar el LFH para un montón, no se puede deshabilitar.
Las aplicaciones que más se benefician de LFH son aplicaciones multiproceso que asignan memoria con frecuencia y usan una variedad de tamaños de asignación cómodamente por debajo de 16 KB. Sin embargo, no todas las aplicaciones se benefician del LFH. Para evaluar los efectos de habilitar el LFH en la aplicación, use los datos de generación de perfiles de rendimiento.