Aracılığıyla paylaş


Düşük parçalanma yığını

[Bu konudaki bilgiler Windows Server 2003 ve Windows XP için geçerlidir. Sistem, Windows Vista'dan başlayarak bellek ayırma isteklerine hizmet vermek için gereken düşük parçalanma yığınını (LFH) kullanır. Uygulamaların yığınları için LFH'yi etkinleştirmesi gerekmez.]

Yığın parçalanması, kullanılabilir belleğin küçük, bitişik olmayan bloklara ayrıldığı bir durumdur. Bir yığın parçalandığında, yığındaki toplam kullanılabilir bellek isteği karşılamak için yeterli olsa bile bellek ayırma işlemi başarısız olabilir çünkü tek bir bellek bloğu yeterince büyük değildir. Düşük parçalanma yığını (LFH), yığın parçalanmasını azaltmaya yardımcı olur.

LFH ayrı bir yığın değildir. Bunun yerine, uygulamaların yığınları için etkinleştirebileceği bir ilkedir. LFH etkinleştirildiğinde, sistem belirli önceden belirlenmiş boyutlarda bellek ayırır. Bir uygulama LFH'nin etkinleştirildiği bir yığından bellek ayırma isteğinde bulunduğunda, sistem istenen boyutu içerecek kadar büyük olan en küçük bellek bloğunu ayırır. Geçerli uygulamada sistem, LFH'nin etkinleştirilip etkinleştirilmediğine bakılmaksızın yaklaşık 16 KB'tan büyük ayırmalar için LFH'yi kullanmaz.

Bir uygulama LFH'yi yalnızca çağırma işleminin varsayılan yığını veya uygulamanın oluşturduğu özel yığınlar için etkinleştirmelidir. Bir yığın için LFH'yi etkinleştirmek için GetProcessHeap işlevini kullanarak çağırma işleminin varsayılan yığınına bir tanıtıcı alın veya HeapCreate işlevi tarafından oluşturulan özel bir yığın için tanıtıcıyı kullanın. Ardından HeapSetInformation işlevini tanıtıcıyla çağırın.

LFH, HEAP_NO_SERIALIZE ile oluşturulan yığınlar veya sabit boyutlu yığınlar için etkinleştirilemez. Windows için Hata Ayıklama Araçları veya Uygulama Doğrulayıcıyığın hata ayıklama araçlarını kullanıyorsanız LFH de etkinleştirilemez.

LFH bir yığın için etkinleştirildikten sonra devre dışı bırakılamaz.

LFH'den en çok yararlanan uygulamalar, sık sık bellek ayıran ve 16 KB'ın altında çeşitli ayırma boyutlarını rahatça kullanan çok iş parçacıklı uygulamalardır. Ancak, tüm uygulamalar LFH'den yararlanmıyor. Uygulamanızda LFH'yi etkinleştirmenin etkilerini değerlendirmek için performans profili oluşturma verilerini kullanın.