Tumpukan fragmentasi rendah
[Informasi dalam topik ini berlaku untuk Windows Server 2003 dan Windows XP. Dimulai dengan Windows Vista, sistem menggunakan tumpukan fragmentasi rendah (LFH) sesuai kebutuhan untuk melayani permintaan alokasi memori. Aplikasi tidak perlu memfungsikan LFH untuk timbunannya.]
Fragmentasi timbunan adalah keadaan di mana memori yang tersedia dipecah menjadi blok kecil yang tidak bersebelahan. Ketika tumpukan terfragmentasi, alokasi memori dapat gagal bahkan ketika total memori yang tersedia dalam tumpukan cukup untuk memenuhi permintaan, karena tidak ada satu blok memori yang cukup besar. Tumpukan fragmentasi rendah (LFH) membantu mengurangi fragmentasi tumpukan.
LFH bukan timbunan terpisah. Sebaliknya, ini adalah kebijakan yang dapat diaktifkan aplikasi untuk tumpukannya. Ketika LFH diaktifkan, sistem mengalokasikan memori dalam ukuran tertentu yang telah ditentukan. Ketika aplikasi meminta alokasi memori dari timbunan yang mengaktifkan LFH, sistem mengalokasikan blok memori terkecil yang cukup besar untuk berisi ukuran yang diminta. Dalam implementasi saat ini, sistem tidak menggunakan LFH untuk alokasi yang lebih besar dari sekitar 16 KB, apakah LFH diaktifkan atau tidak.
Aplikasi harus mengaktifkan LFH hanya untuk timbunan default proses panggilan atau untuk tumpukan privat yang telah dibuat aplikasi. Untuk mengaktifkan LFH untuk timbunan, gunakan fungsiGetProcessHeap untuk mendapatkan handel ke tumpukan default proses panggilan, atau gunakan handel ke timbunan privat yang dibuat oleh fungsiHeapCreate. Kemudian panggil fungsiHeapSetInformation dengan handel.
LFH tidak dapat diaktifkan untuk timbunan yang dibuat dengan HEAP_NO_SERIALIZE atau untuk timbunan yang dibuat dengan ukuran tetap. LFH juga tidak dapat diaktifkan jika Anda menggunakan alat penelusuran kesalahan timbunan di Alat Penelusuran Kesalahan untuk Windows atau Application Verifier.
Setelah LFH diaktifkan untuk timbunan, LFH tidak dapat dinonaktifkan.
Aplikasi yang paling mendapat manfaat dari LFH adalah aplikasi multithreaded yang sering mengalokasikan memori dan menggunakan berbagai ukuran alokasi dengan nyaman di bawah 16 KB. Namun, tidak semua aplikasi mendapat manfaat dari LFH. Untuk menilai efek mengaktifkan LFH di aplikasi Anda, gunakan data pembuatan profil performa.