Bagikan melalui


!tumpukan

Ekstensi !heap menampilkan informasi penggunaan timbunan, mengontrol titik heap di manajer timbunan, mendeteksi blok timbunan bocor, mencari blok timbunan, atau menampilkan informasi timbunan halaman.

Ekstensi ini mendukung timbunan segmen dan timbunan NT. Gunakan !heap tanpa parameter untuk mencantumkan semua timbunan dan jenisnya.

!heap [HeapOptions] [ValidationOptions] [Heap] 
!heap -b [{alloc|realloc|free} [Tag]] [Heap | BreakAddress] 
!heap -B {alloc|realloc|free} [Heap | BreakAddress] 
!heap -l 
!heap -s [SummaryOptions] [StatHeapAddress] 
!heap -i HeapAddress
!heap -x [-v] Address 
!heap -p [PageHeapOptions] 
!heap -srch [Size] Pattern
!heap -flt FilterOptions
!heap -stat [-h Handle [-grp GroupBy [MaxDisplay]]]
!heap [-p] -?
!heap -triage [Handle | Address] 

Parameter Tumpuk segmen dan NT

Parameter ini berfungsi dengan tumpuan Segment dan NT.

-s
Menentukan bahwa informasi ringkasan sedang diminta. Jika SummaryOptions dan StatHeapAddress dihilangkan, informasi ringkasan ditampilkan untuk semua timbunan yang terkait dengan proses saat ini.

SummaryOptions
Dapat berupa kombinasi opsi berikut. SummaryOptions tidak peka huruf besar/kecil. Ketik !heap -s -? untuk informasi tambahan.

Opsi Efek

-v

Memverifikasi semua blok data.

-b BucketSize

Menentukan ukuran wadah. Defaultnya adalah 1024 bit.

-d DumpBlockSize

Menentukan ukuran wadah.

-sebuah

Mencadangkan semua blok timbunan.

-c

Menentukan bahwa konten setiap blok harus ditampilkan.

-triage [Handle | Address]
Menyebabkan debugger secara otomatis mencari kegagalan dalam timbunan proses. Jika handel tumpukan ditentukan sebagai argumen, timbunan tersebut diperiksa; jika tidak, semua tumpukan dicari yang berisi alamat yang diberikan, dan jika ditemukan, itu diperiksa. Menggunakan -triage adalah satu-satunya cara untuk memvalidasi kerusakan tumpukan fragmentasi rendah (LFH).

-x [-v]
Menyebabkan debugger mencari blok heap yang berisi alamat yang ditentukan. Jika -v ditambahkan, perintah akan mencari seluruh ruang memori virtual dari proses saat ini untuk penunjuk ke blok timbunan ini.

-L
Menyebabkan debugger mendeteksi blok timbunan yang bocor.

-saya Alamat -h HeapAddress
Menampilkan informasi tentang Timbunan yang ditentukan.

Alamat
Menentukan alamat yang akan dicari.

-?
Menampilkan beberapa teks Bantuan singkat untuk ekstensi ini di jendela Perintah Debugger. Gunakan !heap -? untuk bantuan generik, dan !heap -p -? untuk bantuan timbunan halaman.

Parameter Timbunan NT

Parameter ini hanya berfungsi dengan NT Heap.

HeapOptions
Dapat berupa kombinasi opsi berikut. Nilai HeapOptions peka huruf besar/kecil.

Opsi Efek

-v

Menyebabkan debugger memvalidasi tumpukan yang ditentukan.

Catatan Opsi ini tidak mendeteksi kerusakan tumpukan fragmentasi rendah (LFH). Gunakan -triase sebagai gantinya .

-sebuah

Menyebabkan tampilan menyertakan semua informasi untuk timbunan yang ditentukan. Ukuran, dalam hal ini, dibulatkan ke atas ke granularitas tumpukan. (Menjalankan !heap dengan opsi -a setara dengan menjalankannya dengan tiga opsi -h -f -m, yang dapat memakan waktu lama.)

-jam

Menyebabkan tampilan menyertakan semua entri non-LFH untuk tumpukan yang ditentukan.

-Hl

Menyebabkan tampilan menyertakan semua entri untuk timbunan yang ditentukan, termasuk entri LFH.

-f

Menyebabkan tampilan menyertakan semua entri daftar gratis untuk tumpukan yang ditentukan.

-m

Menyebabkan tampilan menyertakan semua entri segmen untuk tumpukan yang ditentukan.

-t

Menyebabkan tampilan menyertakan informasi tag untuk timbunan yang ditentukan.

-T

Menyebabkan tampilan menyertakan entri pseudo-tag untuk tumpukan yang ditentukan.

-g

Menyebabkan tampilan menyertakan informasi tag global. Tag global dikaitkan dengan setiap alokasi yang tidak diberi tag.

-s

Menyebabkan tampilan menyertakan informasi ringkasan untuk timbunan yang ditentukan.

-k

(hanya target berbasis x86) Menyebabkan tampilan menyertakan backtrace tumpukan yang terkait dengan setiap entri.

ValidationOptions
Bisa menjadi salah satu opsi berikut. ValidationOptions peka huruf besar/kecil.

Opsi Efek

-D

Menonaktifkan validasi-on-call untuk heap yang ditentukan.

-E

Mengaktifkan validasi-on-call untuk heap yang ditentukan.

-d

Menonaktifkan pemeriksaan timbunan untuk timbunan yang ditentukan.

-e

Mengaktifkan pemeriksaan timbunan untuk timbunan yang ditentukan.

-saya Alamat Timbunan atau HeapAddress
Menampilkan informasi tentang Timbunan yang ditentukan.

BreakAddress
Menentukan alamat blok tempat titik henti akan diatur atau dihapus.

-b
Menyebabkan debugger membuat titik henti kondisi di manajer timbunan. Opsi -b dapat diikuti oleh alokasi, realloc, atau gratis; ini menentukan apakah titik henti akan diaktifkan dengan mengalokasikan, merealokasi, atau membebaskan memori. Jika BreakAddress digunakan untuk menentukan alamat blok, jenis titik henti dapat dihilangkan. Jika Heap digunakan untuk menentukan alamat timbunan atau indeks timbunan, jenis harus disertakan, serta parameter Tag .

Tag
Menentukan nama tag dalam timbunan.

-B
Menyebabkan debugger menghapus titik henti bersyar dari manajer timbunan. Jenis titik henti (alokasi, realloc, atau bebas) harus ditentukan, dan harus sama dengan yang digunakan dengan opsi -b.

StatHeapAddress
Menentukan alamat timbunan. Jika ini adalah 0 atau dihilangkan, semua timbunan yang terkait dengan proses saat ini ditampilkan.

-p
Menentukan bahwa informasi timbunan halaman sedang diminta. Jika ini digunakan tanpa PageHeapOptions, semua timbunan halaman akan ditampilkan.

PageHeapOptions
Bisa menjadi salah satu opsi berikut. PageHeapOptions peka huruf besar/kecil. Jika tidak ada opsi yang ditentukan, semua kemungkinan handel timbunan halaman akan ditampilkan.

Opsi Efek

-h Handel

Menyebabkan debugger menampilkan informasi terperinci tentang timbunan halaman dengan handel Handel.

-a Alamat

Menyebabkan debugger menemukan timbunan halaman yang bloknya berisi Alamat. Detail lengkap tentang bagaimana alamat ini terkait dengan blok tumpukan halaman penuh akan disertakan, seperti apakah alamat ini adalah bagian dari tumpukan halaman, offsetnya di dalam blok, dan apakah blok dialokasikan atau dibebaskan. Jejak tumpukan disertakan setiap kali tersedia. Saat menggunakan opsi ini, ukuran ditampilkan dalam kelipatan granularitas alokasi timbunan.

-t[c|s] [Jejak]

Menyebabkan debugger menampilkan jejak yang dikumpulkan dari pengguna tumpukan berat. Jejak menentukan jumlah jejak yang akan ditampilkan; defaultnya adalah empat. Jika ada lebih banyak jejak daripada angka yang ditentukan, jejak paling awal akan ditampilkan. Jika -t atau -tc digunakan, jejak diurutkan menurut penggunaan hitungan. Jika -ts digunakan, jejak diurutkan menurut ukuran. (Opsi -tc dan -ts hanya didukung di Windows XP; opsi -t hanya didukung di Windows XP dan versi Windows yang lebih lama.)

-fi [Jejak]

Menyebabkan debugger menampilkan jejak injeksi kesalahan terbaru. Jejak menentukan kuantitas yang akan ditampilkan; defaultnya adalah 4.

-semua

Menyebabkan debugger menampilkan informasi terperinci tentang semua timbunan halaman.

-?

Menyebabkan debugger menampilkan bantuan timbunan halaman, termasuk diagram blok timbunan. (Diagram ini juga dapat dilihat di bagian Keterangan berikut.)

Sebelum Anda dapat menggunakan perintah ekstensi !heap -p , tumpukan halaman harus diaktifkan untuk proses target Anda. Lihat detail di bagian Keterangan berikut.

-srch
Memindai semua tumpukan untuk pola yang diberikan.

Pola
Menentukan pola yang akan dilihat.

Tingginya
Bisa menjadi salah satu opsi berikut. Ini menentukan ukuran pola. '-' diperlukan.

Opsi Efek

-b

Polanya berukuran satu BYTE.

-w

Polanya berukuran satu WORD.

-d

Polanya berukuran satu DWORD.

-q

Polanya berukuran satu QWORD.

Jika tidak ada hal di atas yang ditentukan, maka pola diasumsikan berukuran sama dengan penunjuk komputer.

-flt
Membatasi tampilan untuk hanya menyertakan alokasi timbunan dari ukuran atau rentang ukuran tertentu.

FilterOptions
Bisa menjadi salah satu opsi berikut. FilterOptions peka huruf besar/kecil.

Opsi Efek

s Ukuran

Membatasi tampilan untuk hanya menyertakan tumpukan dari satu ukuran.

r SizeMin SizeMax

Membatasi tampilan untuk hanya menyertakan tumpukan dalam rentang ukuran yang ditentukan.

Catatan

Dalam versi yang lebih baru dari opsi !heap seperti -flt mungkin tidak lagi ada. Gunakan bantuan baris perintah untuk mengonfirmasi opsi yang tersedia.

-Stat
Menampilkan statistik penggunaan untuk timbunan yang ditentukan.

-h Menangani
Menyebabkan statistik penggunaan hanya untuk timbunan di Handle yang akan ditampilkan. Jika Handle adalah 0 atau dihilangkan, statistik penggunaan untuk semua timbunan ditampilkan.

-grp GroupBy
Menyusun ulang tampilan seperti yang ditentukan oleh GroupBy. Opsi untuk GroupBy dapat ditemukan dalam tabel berikut.

Opsi Efek

A

Menampilkan statistik penggunaan sesuai dengan ukuran alokasi.

B

Menampilkan statistik penggunaan sesuai dengan jumlah blok.

S

Menampilkan statistik penggunaan sesuai dengan ukuran total setiap alokasi.

MaxDisplay
Membatasi output hanya untuk jumlah baris MaxDisplay .

DLL

Windows XP dan yang lebih baru

Ext.dll Exts.dll

Informasi Tambahan

Untuk informasi tentang timbunan, lihat sumber daya berikut ini:

Buku: Microsoft Windows Internals by Mark Russinovich dan David Solomon.

Contoh 11: Mengaktifkan Verifikasi Timbunan Halaman

Contoh 12: Menggunakan Verifikasi Timbunan Halaman untuk Menemukan Bug

Untuk informasi tentang menggunakan pencatat proses memori Heap, lihat Contoh 11: Memulai Sesi Pelacakan Privat

Keterangan

Perintah ekstensi ini dapat digunakan untuk melakukan berbagai tugas.

Perintah standar !heap digunakan untuk menampilkan informasi timbunan untuk proses saat ini. (Ini harus digunakan hanya untuk proses mode pengguna. Perintah ekstensi !pool harus digunakan untuk proses sistem.)

Perintah !heap -b dan !heap -B digunakan untuk membuat dan menghapus titik heap kondisi di manajer heap.

Perintah !heap -l mendeteksi blok timbunan yang bocor. Ini menggunakan algoritma pengumpul sampah untuk mendeteksi semua blok sibuk dari tumpukan yang tidak dirujuk di mana saja di ruang alamat proses. Untuk aplikasi besar, dibutuhkan beberapa menit untuk menyelesaikannya. Perintah ini hanya tersedia di Windows XP dan versi Windows yang lebih baru.

Perintah !heap -x mencari blok heap yang berisi alamat tertentu. Jika opsi -v digunakan, perintah ini juga akan mencari seluruh ruang memori virtual dari proses saat ini untuk pointer ke blok heap ini. Perintah ini hanya tersedia di Windows XP dan versi Windows yang lebih baru.

Perintah !heap -p menampilkan berbagai bentuk informasi timbunan halaman. Sebelum menggunakan !heap -p, Anda harus mengaktifkan tumpukan halaman untuk proses target. Ini dilakukan melalui utilitas Global Flags (gflags.exe). Untuk melakukan ini, mulai utilitas, isi nama aplikasi target di kotak teks Nama File Gambar, pilih Opsi File Gambar dan Aktifkan timbunan halaman, dan pilih Terapkan. Atau, Anda dapat memulai utilitas Bendera Global dari jendela Prompt Perintah dengan mengetik gflags /i xxx.exe +hpa, di mana xxx.exe adalah nama aplikasi target.

Perintah !heap -p -t[c|s] tidak didukung di luar Windows XP. Gunakan alat UMDH yang disediakan dengan paket debugger untuk mendapatkan hasil serupa.

Perintah !heap -srch menampilkan entri timbunan yang berisi pola tertentu.

Perintah !heap -flt membatasi tampilan hanya untuk alokasi timbunan dari ukuran tertentu.

Perintah !heap -stat menampilkan statistik penggunaan timbunan.

Berikut adalah contoh perintah standar !heap :

0:000> !ntsdexts.heap -a
Index   Address  Name      Debugging options enabled
  1:   00250000 
    Segment at 00250000 to 00350000 (00056000 bytes committed)
    Flags:               50000062
    ForceFlags:          40000060
    Granularity:         8 bytes
    Segment Reserve:     00100000
    Segment Commit:      00004000
    DeCommit Block Thres:00000400
    DeCommit Total Thres:00002000
    Total Free Size:     000003be
    Max. Allocation Size:7ffddfff
    Lock Variable at:    00250b54
    Next TagIndex:       0012
    Maximum TagIndex:    07ff
    Tag Entries:         00350000
    PsuedoTag Entries:   00250548
    Virtual Alloc List:  00250050
    UCR FreeList:        002504d8
    128-bit bitmap of free lists
    FreeList Usage:      00000014 00000000 00000000 00000000
              Free    Free
              List    List
#       Head      Blink      Flink
    FreeList[ 00 ] at 002500b8: 002a4378 . 002a4378
                                0x02 - HEAP_ENTRY_EXTRA_PRESENT
                                0x04 - HEAP_ENTRY_FILL_PATTERN
        Entry     Prev    Cur   0x10 - HEAP_ENTRY_LAST_ENTRY

Address   Size    Size  flags
002a4370: 00098 . 01c90 [14] - free
    FreeList[ 02 ] at 002500c8: 0025cb30 . 002527b8
002527b0: 00058 . 00010 [04] - free
0025cb28: 00088 . 00010 [04] - free
    FreeList[ 04 ] at 002500d8: 00269a08 . 0026e530
0026e528: 00038 . 00020 [04] - free
0026a4d0: 00038 . 00020 [06] - free
0026f9b8: 00038 . 00020 [04] - free
0025cda0: 00030 . 00020 [06] - free
00272660: 00038 . 00020 [04] - free
0026ab60: 00038 . 00020 [06] - free
00269f20: 00038 . 00020 [06] - free
00299818: 00038 . 00020 [04] - free
0026c028: 00038 . 00020 [06] - free
00269a00: 00038 . 00020 [46] - free
 
    Segment00 at 00250b90:
Flags:           00000000
Base:            00250000
First Entry:     00250bc8
Last Entry:      00350000
Total Pages:     00000080
Total UnCommit:  00000055
Largest UnCommit:000aa000
UnCommitted Ranges: (1)
    002a6000: 000aa000

    Heap entries for Segment00 in Heap 250000
                        0x01 - HEAP_ENTRY_BUSY            
                        0x02 - HEAP_ENTRY_EXTRA_PRESENT   
                        0x04 - HEAP_ENTRY_FILL_PATTERN    
                        0x08 - HEAP_ENTRY_VIRTUAL_ALLOC   
                        0x10 - HEAP_ENTRY_LAST_ENTRY      
                        0x20 - HEAP_ENTRY_SETTABLE_FLAG1  
                        0x40 - HEAP_ENTRY_SETTABLE_FLAG2  
Entry     Prev    Cur   0x80 - HEAP_ENTRY_SETTABLE_FLAG3  

Address   Size    Size  flags       (Bytes used)    (Tag name)
00250000: 00000 . 00b90 [01] - busy (b90)
00250b90: 00b90 . 00038 [01] - busy (38) 
00250bc8: 00038 . 00040 [07] - busy (24), tail fill (NTDLL!LDR Database)
00250c08: 00040 . 00060 [07] - busy (48), tail fill (NTDLL!LDR Database)
00250c68: 00060 . 00028 [07] - busy (10), tail fill (NTDLL!LDR Database)
00250c90: 00028 . 00060 [07] - busy (48), tail fill (NTDLL!LDR Database)
00250cf0: 00060 . 00050 [07] - busy (38), tail fill (Objects=  80)
00250d40: 00050 . 00048 [07] - busy (2e), tail fill (NTDLL!LDR Database)
00250d88: 00048 . 00c10 [07] - busy (bf4), tail fill (Objects>1024)
00251998: 00c10 . 00030 [07] - busy (12), tail fill (NTDLL!LDR Database)
...
002525c0: 00030 . 00060 [07] - busy (48), tail fill (NTDLL!LDR Database)
00252620: 00060 . 00050 [07] - busy (38), tail fill (NTDLL!LDR Database)
00252670: 00050 . 00040 [07] - busy (22), tail fill (NTDLL!CSRSS Client)
002526b0: 00040 . 00040 [07] - busy (24), tail fill (Objects=  64)
002526f0: 00040 . 00040 [07] - busy (24), tail fill (Objects=  64)
00252730: 00040 . 00028 [07] - busy (10), tail fill (Objects=  40)
00252758: 00028 . 00058 [07] - busy (3c), tail fill (Objects=  88)
002527b0: 00058 . 00010 [04] free fill
002527c0: 00010 . 00058 [07] - busy (3c), tail fill (NTDLL!LDR Database)
00252818: 00058 . 002d0 [07] - busy (2b8), tail fill (Objects= 720)
00252ae8: 002d0 . 00330 [07] - busy (314), tail fill (Objects= 816)
00252e18: 00330 . 00330 [07] - busy (314), tail fill (Objects= 816)
00253148: 00330 . 002a8 [07] - busy (28c), tail fill (NTDLL!LocalAtom)
002533f0: 002a8 . 00030 [07] - busy (18), tail fill (NTDLL!LocalAtom)
00253420: 00030 . 00030 [07] - busy (18), tail fill (NTDLL!LocalAtom)
00253450: 00030 . 00098 [07] - busy (7c), tail fill (BASEDLL!LMEM)
002534e8: 00098 . 00060 [07] - busy (44), tail fill (BASEDLL!TMP)
00253548: 00060 . 00020 [07] - busy (1), tail fill (Objects=  32)
00253568: 00020 . 00028 [07] - busy (10), tail fill (Objects=  40)
00253590: 00028 . 00030 [07] - busy (16), tail fill (Objects=  48)
...
0025ccb8: 00038 . 00060 [07] - busy (48), tail fill (NTDLL!LDR Database)
0025cd18: 00060 . 00058 [07] - busy (3c), tail fill (NTDLL!LDR Database)
0025cd70: 00058 . 00030 [07] - busy (18), tail fill (NTDLL!LDR Database)
0025cda0: 00030 . 00020 [06] free fill (NTDLL!Temporary)
0025cdc0: 00020 . 00258 [07] - busy (23c), tail fill (Objects= 600)
0025d018: 00258 . 01018 [07] - busy (1000), tail fill (Objects>1024)
0025e030: 01018 . 00060 [07] - busy (48), tail fill (NTDLL!LDR Database)
...
002a4190: 00028 . 00118 [07] - busy (100), tail fill (BASEDLL!GMEM)
002a42a8: 00118 . 00030 [07] - busy (18), tail fill (Objects=  48)
002a42d8: 00030 . 00098 [07] - busy (7c), tail fill (Objects= 152)
002a4370: 00098 . 01c90 [14] free fill
002a6000:      000aa000      - uncommitted bytes.

Berikut adalah contoh perintah !heap -l :

1:0:011> !heap -l
1:Heap 00170000
Heap 00280000
Heap 00520000
Heap 00b50000
Heap 00c60000
Heap 01420000
Heap 01550000
Heap 016d0000
Heap 019b0000
Heap 01b40000
Scanning VM ...
## Entry     User      Heap      Segment       Size  PrevSize  Flags

001b2958  001b2960  00170000  00000000        40        18  busy extra
001b9cb0  001b9cb8  00170000  00000000        80       300  busy extra
001ba208  001ba210  00170000  00000000        80        78  busy extra
001cbc90  001cbc98  00170000  00000000        e0        48  busy extra
001cbd70  001cbd78  00170000  00000000        d8        e0  busy extra
001cbe90  001cbe98  00170000  00000000        68        48  busy extra
001cbef8  001cbf00  00170000  00000000        58        68  busy extra
001cc078  001cc080  00170000  00000000        f8       128  busy extra
001cc360  001cc368  00170000  00000000        80        50  busy extra
001cc3e0  001cc3e8  00170000  00000000        58        80  busy extra
001fe550  001fe558  00170000  00000000       150       278  busy extra
001fe6e8  001fe6f0  00170000  00000000        48        48  busy extra
002057a8  002057b0  00170000  00000000        58        58  busy extra
00205800  00205808  00170000  00000000        48        58  busy extra
002058b8  002058c0  00170000  00000000        58        70  busy extra
00205910  00205918  00170000  00000000        48        58  busy extra
00205958  00205960  00170000  00000000        90        48  busy extra
00246970  00246978  00170000  00000000        60        88  busy extra
00251168  00251170  00170000  00000000        78        d0  busy extra user_flag
00527730  00527738  00520000  00000000        40        40  busy extra
00527920  00527928  00520000  00000000        40        80  busy extra
21 leaks detected.

Tabel dalam contoh ini berisi semua 21 kebocoran yang ditemukan.

Berikut adalah contoh perintah !heap -x :

0:011> !heap 002057b8 -x
## Entry     User      Heap      Segment       Size  PrevSize  Flags

002057a8  002057b0  00170000  00170640        58        58  busy extra

Berikut adalah contoh perintah !heap -x -v :

1:0:011> !heap 002057b8 -x -v
## 1:Entry     User      Heap      Segment       Size  PrevSize  Flags

002057a8  002057b0  00170000  00170640        58        58  busy extra

Search VM for address range 002057a8 - 002057ff : 00205990 (002057d0),

Dalam contoh ini, ada penunjuk ke blok timbunan ini di alamat 0x00205990.

Berikut adalah contoh perintah !heap -flt s :

0:001>!heap -flt s 0x50

Ini akan menampilkan semua alokasi ukuran 0x50.

Berikut adalah contoh perintah !heap -flt r :

0:001>!heap -flt r 0x50 0x80

Ini akan menampilkan setiap alokasi yang ukurannya antara 0x50 dan 0x7F.

Berikut adalah contoh perintah !heap -srch .

0:001> !heap -srch 77176934
    _HEAP @ 00090000
   in HEAP_ENTRY: Size : Prev Flags - UserPtr UserSize - state
        00099A48: 0018 : 0005 [01] - 00099A50 (000000B8) - (busy)
          ole32!CALLFRAME_CACHE<INTERFACE_HELPER_CLSID>::`vftable'
    _HEAP @ 00090000
   in HEAP_ENTRY: Size : Prev Flags - UserPtr UserSize - state
        00099B58: 0018 : 0005 [01] - 00099B60 (000000B8) - (busy)
          ole32!CALLFRAME_CACHE<INTERFACE_HELPER_CLSID>::`vftable'

Diagram berikut menunjukkan pengaturan blok tumpukan.

Blok timbunan halaman ringan -- dialokasikan:

 +-----+---------------+---+                                  
 |     |               |   |                                  
 +-----+---------------+---+                                  
    ^         ^          ^                                    
    |         |          8 suffix bytes (filled with 0xA0)    
    |         User allocation (filled with E0 if zeroing not requested) 
    Block header (starts with 0xABCDAAAA and ends with 0xDCBAAAAA) 

Blok tumpukan halaman ringan -- dibesarkan:

 +-----+---------------+---+                                  
 |     |               |   |                                  
 +-----+---------------+---+                                  
    ^         ^          ^                                    
    |         |          8 suffix bytes (filled with 0xA0)    
    |         User allocation (filled with F0 bytes)          
    Block header (starts with 0xABCDAAA9 and ends with 0xDCBAAA9) 

Blok timbunan halaman penuh -- dialokasikan:

 +-----+---------+---+-------                                 
 |     |         |   |  ... N/A page                          
 +-----+---------+---+-------                                 
    ^       ^      ^                                          
    |       |      0-7 suffix bytes (filled with 0xD0)        
    |       User allocation (if zeroing not requested, filled   
            with C0)       
    Block header (starts with 0xABCDBBBB and ends with 0xDCBABBBB) 

Blok tumpukan halaman penuh -- dibekukan:

 +-----+---------+---+-------                                 
 |     |         |   |  ... N/A page                          
 +-----+---------+---+-------                                 
    ^       ^      ^                                          
    |       |      0-7 suffix bytes (filled with 0xD0)        
    |       User allocation (filled with F0 bytes)            
    Block header (starts with 0xABCDBBA and ends with 0xDCBABBBA) 

Untuk melihat jejak tumpukan alokasi atau membebaskan blok tumpukan atau blok tumpukan halaman penuh, gunakan dt DPH_BLOCK_INFORMATION dengan alamat header, diikuti oleh dds dengan bidang StackTrace blok.