低片段堆積

[本主題中的資訊適用于 Windows Server 2003 和 Windows XP。 從 Windows Vista 開始,系統會視需要使用低片段堆積 (LFH) 服務記憶體配置要求。 應用程式不需要為其堆積啟用 LFH。]

堆積片段是可用記憶體分成小型非連續區塊的狀態。 當堆積分散時,即使堆積中的可用記憶體總數足以滿足要求,記憶體配置仍可能會失敗,因為沒有單一記憶體區塊夠大。 低片段堆積 (LFH) 有助於減少堆積片段。

LFH 不是個別的堆積。 相反地,這是應用程式可以為其堆積啟用的原則。 啟用 LFH 時,系統會在特定預先決定的大小中配置記憶體。 當應用程式向已啟用 LFH 的堆積要求記憶體配置時,系統會配置大小足以包含所要求大小的最小記憶體區塊。 在目前的實作中,不論是否啟用 LFH,系統都不會將 LFH 用於大於 16 KB 的配置。

應用程式應該只針對呼叫進程的預設堆積或應用程式已建立 的私人堆積 啟用 LFH。 若要啟用堆積的 LFH,請使用 GetProcessHeap 函式來取得呼叫進程預設堆積的控制碼,或使用 HeapCreate 函式所建立的私人堆積控制碼。 然後使用控制碼呼叫 HeapSetInformation 函式。

無法針對使用 HEAP_NO_SERIALIZE 建立的堆積啟用 LFH,也無法針對以固定大小建立的堆積啟用。 如果您使用 適用于 Windows應用程式驗證器的偵錯工具中的堆積偵錯工具,也無法啟用 LFH。

在堆積啟用 LFH 之後,就無法停用。

受益于 LFH 的應用程式是經常配置記憶體的多執行緒應用程式,且使用各種配置大小,其大小大致低於 16 KB。 不過,並非所有應用程式都受益于 LFH。 若要評估在應用程式中啟用 LFH 的效果,請使用效能分析資料。