Tumpukan fragmentasi rendah

[Informasi dalam topik ini berlaku untuk Windows Server 2003 dan Windows XP. Dimulai dengan Windows Vista, sistem menggunakan heap fragmentasi rendah (LFH) sesuai kebutuhan untuk melayani permintaan alokasi memori. Aplikasi tidak perlu memfungsikan LFH untuk tumpukannya.]

Fragmentasi timbunan adalah keadaan di mana memori yang tersedia dipecah menjadi blok kecil yang tidak berdamai. 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 timbunan privat yang telah dibuat aplikasi. Untuk mengaktifkan LFH untuk heap, gunakan fungsi GetProcessHeap untuk mendapatkan handel ke timbunan default proses panggilan, atau gunakan handel ke timbunan privat yang dibuat oleh fungsi HeapCreate . Kemudian panggil fungsi HeapSetInformation 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 Debugging untuk Windows atau Pemverifikasi Aplikasi.

Setelah LFH diaktifkan untuk heap, 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.