Heap met lage fragmentatie
[De informatie in dit onderwerp is van toepassing op Windows Server 2003 en Windows XP. Vanaf Windows Vista gebruikt het systeem de heap met weinig fragmentatie (LFH) indien nodig voor het verwerken van aanvragen voor geheugentoewijzing. Toepassingen hoeven de LFH niet in te schakelen voor hun heaps.]
Heap-fragmentatie is een toestand waarin het beschikbare geheugen wordt opgesplitst in kleine, niet-aaneengesloten blokken. Wanneer een heap is gefragmenteerd, kan de geheugentoewijzing mislukken, zelfs wanneer het totale beschikbare geheugen in de heap voldoende is om aan een aanvraag te voldoen, omdat er geen enkel geheugenblok groot genoeg is. De heap met lage fragmentatie (LFH) helpt om heapfragmentatie te verminderen.
De LFH is geen aparte heap. In plaats daarvan is het een beleid dat toepassingen kunnen inschakelen voor hun heaps. Wanneer de LFH is ingeschakeld, wijst het systeem geheugen toe in bepaalde vooraf vastgestelde grootten. Wanneer een toepassing een geheugentoewijzing aanvraagt van een heap waarvoor de LFH is ingeschakeld, wijst het systeem het kleinste blok geheugen toe dat groot genoeg is om de aangevraagde grootte te bevatten. In de huidige implementatie gebruikt het systeem de LFH niet voor toewijzingen die groter zijn dan ongeveer 16 kB, ongeacht of de LFH is ingeschakeld.
Een toepassing moet de LFH alleen inschakelen voor de standaard heap van het aanroepende proces of voor persoonlijke heaps die de toepassing heeft gemaakt. Als u de LFH wilt inschakelen voor een heap, gebruikt u de functie GetProcessHeap om een ingang te verkrijgen tot de standaard heap van het aanroepende proces of gebruikt u de ingang naar een persoonlijke heap die is gemaakt door de functie HeapCreate. Roep vervolgens de functie HeapSetInformation aan met de ingang.
De LFH kan niet worden ingeschakeld voor heaps die zijn gemaakt met HEAP_NO_SERIALIZE of voor heaps die zijn gemaakt met een vaste grootte. De LFH kan ook niet worden ingeschakeld als u de heap-foutopsporingsprogramma's gebruikt in Hulpprogramma's voor foutopsporing voor Windows of Application Verifier.
Nadat de LFH is ingeschakeld voor een heap, kan deze niet worden uitgeschakeld.
Toepassingen die het meeste profiteren van de LFH zijn multithreaded toepassingen die vaak geheugen toewijzen en een verscheidenheid aan toewijzingsgrootten gebruiken die comfortabel lager zijn dan 16 kB. Niet alle toepassingen profiteren echter van de LFH. Gebruik prestatieprofileringsgegevens om de effecten van het inschakelen van de LFH in uw toepassing te beoordelen.