Kedalaman memori Windows (bagian 2) — Hidup sebuah halaman fisik: lima daftar dan kebenaran berkas halaman
· Diperbarui pada: · Go Komura · Windows, Manajemen memori, Berkas halaman, Working Set, Standby, RAMMap, Pemantauan kinerja
Riwayat revisi (2 pembaruan, terakhir pada 3 Sep 2026)
Catatan perubahan yang dilakukan pada artikel ini. Jika versi sebelumnya telah diarsipkan, versi itu tetap dapat dibaca melalui tautan permanen dengan DOI.
- Memperbaiki cacat tampilan: contoh kode di dalam elemen `<details>` tampil sebagai markup ``` mentah.
- Diterjemahkan ulang sebagai terjemahan lengkap dari naskah Jepang. Versi bahasa Indonesia sebelumnya adalah ringkasan yang hanya memindahkan sebagian naskah, sehingga bagian, tabel, gambar Mermaid, keterangan gambar, dan FAQ tidak ada. Semuanya dipulihkan sesuai naskah Jepang, dan klaim teknisnya sama dengan versi Jepang.
- Publikasi pertama
Mengutip artikel ini(DOI: 10.5281/zenodo.22176114)
Artikel ini diarsipkan di Zenodo. Berikut DOI yang selalu mengarah ke versi terbaru dan DOI yang terikat pada versi yang sedang Anda baca.
Go Komura (2026). Kedalaman memori Windows (bagian 2) — Hidup sebuah halaman fisik: lima daftar dan kebenaran berkas halaman. KomuraSoft LLC. https://doi.org/10.5281/zenodo.22176114 https://comcomponent.com/id/blog/windows-memory-internals-page-lifecycle-pagefile/
- DOI (versi terbaru)
- 10.5281/zenodo.22176114
- DOI (versi ini)
- 10.5281/zenodo.22279998
Di artikel sebelumnya, «Kedalaman memori Windows (bagian 1) — Saat alamat virtual menjadi RAM fisik», kita mengikuti sampai saat penangan page fault mengalokasikan halaman fisik pada sentuhan pertama halaman yang sudah di-Commit. Lalu ke mana halaman fisik itu pergi setelah dikeluarkan dari Working Set?
Penjelasan sering disederhanakan menjadi «diusir ke berkas halaman», tetapi sebenarnya ada beberapa keadaan sebelum dan sesudah itu. Halaman yang tidak diubah dapat pindah ke Standby dengan isinya tetap. Halaman yang sudah diubah pertama-tama menunggu tulis balik di Modified. Saat dipakai ulang ia dapat melewati Free atau Zeroed, dan jika isi yang sama dibutuhkan lagi, ia dapat kembali dari Standby lewat soft fault.
Artikel ini memakai basis data PFN sebagai sumbu dan mengikuti bagaimana satu halaman fisik bergerak melalui Active, Modified, Standby, Free, dan Zeroed. Cara membaca angkanya mengandaikan artikel pengantar «Apa arti “pemakaian memori” Windows sebenarnya? — Membaca Working Set, Private Bytes, Commit, dan page file dengan benar».
«Kedalaman memori Windows» — tiga bagian
- Bagian 1: alamat virtual dan page fault
Mengikuti kapan halaman virtual yang sudah di-Commit memperoleh RAM fisik. - Bagian 2 (artikel ini): hidup sebuah halaman fisik
Mengikuti transisi keadaan halaman yang keluar dari Working Set, dan peran berkas halaman. - Bagian 3: objek section dan copy-on-write
Mengikuti mekanisme DLL, pemetaan berkas, dan memori bersama berbagi halaman fisik.
Pertanyaan yang dijawab bagian 2 hanya satu.
Apakah halaman fisik yang keluar dari Working Set hilang, pergi ke disk, atau tetap di RAM?
Pembaca yang dituju adalah pengembang dan operator yang ingin memahami dari mekanismenya mengapa Available tinggi sekaligus Standby juga tinggi, perilaku setelah pemangkasan Working Set, konfigurasi berkas halaman, dan kompresi memori. Prasyarat lingkungan adalah Windows 10/11 atau Windows Server terkini, dan latar yang dibutuhkan adalah dasar Working Set, Commit, serta soft/hard fault. Tingkat kesulitannya menengah; istilah internal seperti PFN dan daftar halaman dipakai, tetapi fokusnya pada yang dapat diamati dengan RAMMap dan PerfMon tanpa debugger kernel.
Pada diagram, garis utuh menunjukkan relasi yang selalu berlaku dan garis putus-putus menunjukkan relasi bersyarat (syaratnya ada pada penjelasan masing-masing relasi di halaman rincian). Daftar lengkap relasi (total 18, beserta bukti dan tingkat kepastian) serta definisi konsep utama dikumpulkan di halaman rincian peta pengetahuan (dalam bahasa Jepang). Data: JSON-LD / Turtle
1. Kesimpulan dulu
Untuk memulai, berikut poin yang mudah salah dibaca.
- Halaman yang keluar dari Working Set tidak selalu langsung hilang.
Halaman clean tetap di Standby, dan jika isi yang sama dibutuhkan dapat kembali tanpa membaca disk. - Halaman yang sudah diubah tidak dapat langsung dipakai ulang.
Isi privat ditulis kembali ke berkas halaman, berkas yang dipetakan ke berkas yang sesuai, dan semacamnya; halaman baru dipakai ulang setelah dalam keadaan dapat ditulis kembali. - Available mencakup Standby.
Standby adalah cache yang masih menahan isi dan, sekaligus, kandidat pakai ulang yang dapat diambil segera jika perlu.1 - Penulisan ke berkas halaman bukan pekerjaan batch yang baru dimulai setelah RAM habis sama sekali.
Ia berjalan di latar belakang sesuai daftar Modified dan tekanan memori.23 - Berkas halaman bukan sekadar «RAM lambat».
Ia memperlebar Commit Limit, menjadi backing store halaman privat yang diubah, dan menopang dump crash.4 - Menonaktifkan berkas halaman tidak memperbaiki kebocoran memori.
Commit Limit turun, dan opsi memakai RAM secara efektif serta kemampuan mengambil dump dapat berkurang.
Dalam satu kalimat: sebelum membuang halaman, Windows memeriksa kemungkinan halaman itu akan dibutuhkan lagi, dan apakah ada tempat dari mana isi aslinya dapat dipulihkan.
2. Basis data PFN — buku besar di sisi RAM fisik
PTE yang dilihat di bagian 1 mewakili terjemahan dari halaman virtual ke halaman fisik. Buku besar yang melihat hal yang sama dari sisi halaman fisik dan mengikuti «untuk apa halaman RAM ini dipakai sekarang» adalah basis data PFN. PFN adalah Page Frame Number: RAM fisik yang dinomori per satuan halaman.
Entri PFN secara konsep menelusuri informasi berikut.
- Keadaan halaman fisik saat ini
- Hitungan referensi dan hitungan berbagi
- PTE yang sesuai
- Apakah halaman sudah diubah
- Daftar halaman mana yang dimasukinya
- Informasi terkait simpul NUMA dan prioritas
Di WinDbg, !pfn menampilkan informasi PFN tertentu, dan !memusage menampilkan pemakaian memori fisik serta total tiap daftar halaman.56 Jika ingin mengamati dunia yang sama tanpa debugger kernel, Sysinternals RAMMap dapat dipakai. Use Counts menampilkan tujuan dan daftar halaman, Priority Summary menampilkan Standby menurut prioritas, dan Physical Pages menampilkan pemakaian per halaman.7
3. Menghubungkan lima keadaan dalam satu gambar
Artikel ini memperlakukan alur halaman fisik sebagai lima keadaan berikut, dalam bentuk yang disederhanakan. Secara ketat, Windows terkini punya keadaan dan daftar yang tidak digambar di sini — Standby menurut prioritas, Transition, Bad, dan lainnya — dan Active merujuk lebih ke keadaan yang sedang dirujuk dari Working Set atau semacamnya lewat PTE yang valid, daripada «daftar Active» tunggal. Meski begitu, gambar ini cukup berguna untuk membaca perilaku memori aplikasi.
Gambar 1: Halaman yang sedang dirujuk di Working Set pindah ke Standby jika clean, dan ke Modified jika dirty. Isi yang sama dapat kembali; untuk tujuan lain halaman dipakai ulang secara langsung, atau melewati Free/Zeroed sebagai persiapan alokasi yang membutuhkan nol.
Kode sumber Mermaid gambar 1
flowchart LR
zeroed["Zeroed\nSudah di-nol-kan"] -->|Touch pertama| active["Active / Valid\nDirujuk di Working Set"]
active -->|Trim halaman clean| standby["Standby\nKandidat pakai ulang yang menjaga isi"]
active -->|Trim halaman dirty| modified["Modified\nMenunggu tulis balik"]
modified -->|Tulis balik selesai| standby
standby -->|Kembali lewat soft fault| active
standby -->|Buang identitas lama| free["Free\nBelum di-nol-kan"]
standby -->|Pakai ulang langsung untuk tujuan lain| active
free -->|Untuk alokasi yang membutuhkan nol| zeroed
Poin terpenting dalam gambar ini adalah bahwa keluar dari Working Set dan kehilangan isi bukan hal yang sama. Selain itu, ketika halaman Standby diambil untuk tujuan lain, ia tidak selalu melewati Free/Zeroed secara berurutan. Jika akan diserahkan ke mode pengguna sebagai halaman privat demand-zero baru, isi lama perlu dihapus; jika seluruh halaman akan ditimpa — misalnya sebagai tujuan baca isi berkas — identitas Standby dapat dilepas dan halaman dipakai ulang secara langsung.
4. Active / Valid — halaman fisik yang dapat dirujuk sekarang
Halaman Active/Valid dirujuk dari Working Set proses atau dari ruang sistem lewat PTE yang valid. CPU mencapainya dengan terjemahan alamat biasa, jadi akses itu sendiri tidak memerlukan page fault.
Namun tidak ada jaminan halaman tetap Active. Untuk menjaga memori tersedia, manajer memori melihat ukuran Working Set, seberapa baru halaman dipakai, dan faktor serupa, lalu memangkas halaman kandidat. Dokumentasi Working Set Microsoft juga menjelaskan bahwa manajer memori mengeluarkan halaman dari Working Set untuk membuat memori tersedia.8
4.1. Pemangkasan bukan pembebasan
Yang terutama diubah pemangkasan Working Set hanyalah keadaan residensi yang dapat langsung dirujuk lewat PTE yang valid. Bedakan empat berikut sebagai peristiwa yang terpisah.
- Mengeluarkan dari Working Set
- Membebaskan Commit
- Membebaskan rentang alamat virtual
- Kehilangan data asli
Menjalankan EmptyWorkingSet atau «Trim Working Set» pada alat bukan pengganti VirtualFree atau pembebasan heap. Jika halaman yang sama disentuh lagi, ia kembali lewat soft fault dari Standby, atau hard fault dari backing store. Jadi «Working Set berhasil dikecilkan» tidak berarti «kebocoran sudah diperbaiki».
5. Halaman clean pergi ke Standby
Bahkan setelah halaman dikeluarkan dari Working Set, jika isinya masih sama dengan berkas asli atau sudah punya backing store yang aman, halaman itu dapat diletakkan di Standby. Contoh representatif:
- Kode EXE/DLL yang tidak diubah
- Berkas yang dipetakan di memori dan tidak diubah
- Halaman privat yang sudah ditulis kembali
- Data yang tersisa di cache berkas
Halaman Standby menjaga korespondensinya dengan isi sebelumnya. Ketika proses yang sama atau proses lain membutuhkan isi itu, jika halaman belum dipakai ulang, soft fault yang menyambungkan kembali PTE cukup untuk mengembalikannya.
Di sisi lain, jika alokasi lain membutuhkan halaman fisik, identitas Standby lama dapat dibuang dan halaman dipakai ulang. Jika tujuan pakai ulang adalah halaman privat mode pengguna yang membutuhkan inisialisasi nol, halaman Zeroed disiapkan; jika seluruh halaman akan ditimpa isi berkas atau semacamnya, halaman dapat dialokasikan ulang secara langsung tanpa di-nol-kan.
Dua sisi itulah alasan Standby sekaligus cache dan Available.
5.1. Mengapa Available mencakup Standby
MEMORYSTATUSEX.ullAvailPhys mewakili memori fisik yang dapat langsung dipakai ulang tanpa menulis ke disk, dan merupakan jumlah Standby, Free, dan Zeroed.1
flowchart LR
accTitle: Tiga daftar halaman yang membentuk Available
accDescr: Memori fisik tersedia adalah jumlah Standby, Free, dan Zeroed; halaman Active yang dirujuk di Working Set tidak termasuk
standby["Standby (kandidat pakai ulang yang menjaga isi)"] --> avail["Available (memori fisik tersedia)"]
free["Free (kosong, belum di-nol-kan)"] --> avail
zeroed["Zeroed (kosong dan sudah di-nol-kan)"] --> avail
active["Active (dirujuk di Working Set)"] -.->|Tidak termasuk| avail
Gambar 2: Available adalah jumlah Standby, Free, dan Zeroed. Standby yang masih menahan isinya juga dihitung sebagai «tersedia».
Jadi bukan kontradiksi jika Task Manager menampilkan «Free sedikit, tetapi Cached/Standby tinggi, dan Available cukup». Windows tidak membiarkan RAM kosong menganggur; ia meninggalkan berkas dan kode yang baru dipakai di Standby agar dapat dipakai ulang dengan cepat sebagai cache jika perlu, dan mengambilnya jika tujuan lain membutuhkannya.
Jangan simpulkan «Free sedikit, jadi memori langsung kurang»; lihat Available, Commit, hard fault, dan keterlambatan pemrosesan bersama-sama.
6. Halaman dirty menunggu di Modified
Ketika aplikasi menulis ke halaman, isi itu tidak lagi cocok dengan backing store asli. Jika halaman dirty itu ditimpa untuk tujuan lain apa adanya, data hilang. Karena itu, halaman yang sudah diubah dan dikeluarkan dari Working Set menunggu tulis balik di Modified.
Tujuan tulis balik bergantung pada jenis halaman.
| Jenis halaman | Tujuan tulis balik khas |
|---|---|
| Halaman privat yang sudah di-Commit | Berkas halaman |
| Berkas yang dipetakan dan dapat ditulis | Berkas data yang sesuai |
| Data dirty di cache berkas | Berkas data yang sesuai |
| Halaman EXE/DLL yang clean | Tidak perlu ditulis kembali. Dapat dibaca ulang dari citra asli |
Dokumentasi berkas halaman Microsoft juga menjelaskan bahwa .dll, .exe, dan berkas biasa yang sudah ada di disk tidak perlu ditulis lagi ke berkas halaman, dan data yang diubah tanpa salinan disk asli itulah yang menjadi kandidat berkas halaman.2
6.1. Modified Page Writer
Modified Page Writer adalah pekerja sistem yang memindai halaman dirty bertopang berkas halaman yang dilacak manajer memori, lalu menulisnya ke berkas halaman.3 Di sisi berkas yang dipetakan ada jalur seperti Mapped Page Writer, yang bekerja sama dengan sistem berkas dan Cache Manager untuk menulis kembali ke berkas yang sesuai.
Poin pentingnya: penulisan bukan skema «tidak melakukan apa-apa sampai RAM 0 byte». Windows menyiapkan di latar belakang halaman yang nanti dapat dipakai ulang, sesuai daftar Modified, Available, keadaan berkas halaman, dan faktor serupa. Ketika tulis balik selesai dan tidak ada referensi valid lain, halaman maju ke Standby dengan isinya tetap.
flowchart TB
accTitle: Jalur tulis balik halaman yang diubah
accDescr: Halaman yang diubah dan keluar dari Working Set menunggu di daftar Modified; untuk halaman privat, jika berkas halaman dikonfigurasi, Modified Page Writer menulisnya ke berkas halaman, dan halaman berkas yang dipetakan ditulis kembali ke berkas data yang sesuai oleh Mapped Page Writer atau semacamnya, lalu maju ke Standby dengan isinya tetap
dirty["Halaman yang diubah dan keluar dari Working Set"] --> modified["Menunggu tulis balik di daftar Modified"]
modified -->|"Halaman privat (saat berkas halaman dikonfigurasi)"| mpw["Modified Page Writer menulis ke berkas halaman"]
modified -->|Halaman berkas yang dipetakan| mapped["Mapped Page Writer atau semacamnya menulis ke berkas yang sesuai"]
mpw --> standby["Setelah tulis balik, ke Standby dengan isi tetap"]
mapped --> standby
Gambar 3: Tujuan tulis balik ditentukan jenis halaman, dan kedua jalur berjalan di latar belakang. Pada sistem yang menonaktifkan berkas halaman, sisi halaman privat tidak punya tujuan tulis balik, jadi halaman privat yang diubah tetap tinggal di RAM.
6.2. Memisahkan keluaran halaman dan I/O khusus berkas halaman
Penghitung berikut mudah dikacaukan; pastikan artinya.
Memory\\Page Writes/sec: jumlah I/O tulis paging yang dikeluarkan untuk mengosongkan memori fisikMemory\\Pages Output/sec: jumlah halaman yang dikeluarkan ke disk oleh penulisan ituMemory\\Page Reads/sec: jumlah I/O baca disk yang dikeluarkan untuk menyelesaikan hard faultMemory\\Pages Input/sec: jumlah halaman yang masuk RAM dari pembacaan itu
Perhatikan bahwa Page Writes/sec dan Pages Output/sec bukan penghitung yang mengidentifikasi berkas halaman saja. Mereka juga dapat naik di jalur yang menulis kembali halaman dirty bertopang berkas, misalnya berkas yang dipetakan. Sebaliknya, sisi masukan juga tidak membedakan berkas halaman, DLL, EXE, dan berkas yang dipetakan di memori.2 Jika ingin mengidentifikasi I/O khusus pagefile.sys, jangan perkirakan hanya dari empat penghitung ini; rekam File I/O dan Disk I/O dengan ETW/WPA, lalu pastikan berkas sasaran dengan mencocokkan FileObject dan FileName.9
Satu poin lagi: menulis lebih dulu ke berkas halaman tidak berarti segera membaca kembali dari disk. Jika halaman tidak diakses, halaman yang sudah ditulis kembali dapat dikeluarkan dari RAM, dan memori fisik dialihkan ke halaman yang lebih sering dipakai.
7. Perbedaan Standby, Free, dan Zeroed
7.1. Standby
Keadaan yang masih menjaga korespondensi dengan isi sebelumnya.
- Jika isi yang sama dibutuhkan, halaman dapat kembali lewat soft fault
- Jika tujuan lain membutuhkannya, identitas lama dapat dibuang dan halaman dipakai ulang
- Ada daftar Standby menurut prioritas
7.2. Free
Korespondensi valid dengan isi sebelumnya sudah hilang, dan halaman dapat dialokasikan. Namun pola bit lama mungkin masih tersisa di dalam halaman. Menyerahkannya ke mode pengguna apa adanya berisiko membocorkan informasi proses sebelumnya.
7.3. Zeroed
Isinya nol, dan halaman dapat diserahkan dengan aman sebagai halaman mode pengguna baru. Demand-zero fault di bagian 1 adalah kasus representatif: memperoleh halaman Zeroed yang tersedia lalu mengikatnya ke PTE. Persiapan dari Free ke Zeroed dilakukan sesuai permintaan dan keadaan sistem.
Jadi meski «Free» dan «Zeroed» sama-sama tampak kosong, kesiapan keamanannya berbeda.
8. Compression store — membuat satu tujuan lagi di dalam RAM
Mulai Windows 10, ketika ada tekanan memori, manajer memori dalam beberapa kasus dapat mengompres halaman yang jarang dipakai di dalam RAM, alih-alih segera menulisnya ke disk. Kumpulan halaman terkompresi itu adalah compression store.
Pada implementasi awal Windows 10, compression store dihitung di dalam Working Set proses System, tetapi di Windows terkini ia muncul di daftar proses debugger sebagai proses Memory Compression khusus. Jadi ketika menyelidiki jumlah kompresi saat ini, jangan hanya mengikuti Working Set proses System. Tujuannya sendiri — menjaga lebih banyak aplikasi di memori fisik dan mengurangi I/O disk — tidak berubah.1011
Namun ingat poin berikut.
- Halaman terkompresi tetap memakai RAM
- Kompresi dan dekompresi punya biaya CPU
- Kompresi tidak menghapus janji Commit
- Tidak ada urutan tetap «selalu kompres dulu, lalu berkas halaman»
- Kebijakan berubah menurut jenis halaman, tekanan, dan riwayat akses
«Sedang digunakan (terkompresi)» di Task Manager tidak berarti kompresi mengosongkan memori fisik sepenuhnya. Compression store bukan fitur yang membuat berkas halaman tidak diperlukan; ia menambahkan satu opsi yang memakai CPU untuk mengurangi I/O di antara RAM dan penyimpanan.
9. Peran sebenarnya berkas halaman
Berkas halaman punya setidaknya tiga peran.
flowchart LR
accTitle: Tiga peran berkas halaman
accDescr: Berkas halaman memperlebar Commit Limit, menjadi backing store halaman privat yang diubah dan jarang diakses, dan menjadi wadah dump crash sistem
pagefile["Berkas halaman"] --> limit["Memperlebar Commit Limit (kelonggaran di sisi plafon)"]
pagefile --> backing["Backing store halaman privat yang diubah"]
pagefile --> dump["Wadah dump crash sistem"]
Gambar 4: Peran berkas halaman bukan hanya «RAM lambat». Bahkan ketika pemakaian 0, ia tetap menopang plafon dan dump.
9.1. Memperlebar Commit Limit
Commit Limit sistem kira-kira ditentukan oleh RAM plus total semua berkas halaman. Tanpa berkas halaman, Commit Limit turun ke tingkat sedikit lebih kecil dari RAM terpasang. Ketika Commit Total mencapai plafon, Commit baru gagal dan dapat berujung pada penghentian aplikasi yang tidak normal atau gangguan sistem.4
Ini soal lain dari «berapa GB yang sedang ditulis ke pagefile.sys». Berkas halaman juga kelonggaran di sisi plafon yang menopang janji Commit.
9.2. Menopang halaman privat yang diubah
Jika halaman privat yang diubah dan jarang diakses ditopang berkas halaman, halaman fisik itu dapat dikeluarkan dari RAM dan dialihkan ke kode serta data yang sering dipakai.4 Menonaktifkan berkas halaman mengurangi opsi mengeluarkan halaman semacam itu dari RAM. Tidak dapat dikatakan begitu saja «cepat karena paging out tidak terjadi».
9.3. Menopang dump crash sistem
Untuk menghasilkan Memory.dmp saat crash sistem, diperlukan berkas halaman atau berkas dump khusus yang dapat menopang metode dump yang dipilih.2 Dump memori lengkap, dump memori kernel, dan dump memori otomatis berbeda jumlah yang dibutuhkan.
Di lingkungan yang menyelidiki crash, menghapus berkas halaman hanya untuk menghemat ruang dapat berarti bukti tidak tertinggal saat paling dibutuhkan. Untuk cara pengumpulan, lihat juga «Pengantar pengumpulan crash dump aplikasi Windows».
10. Ukuran yang tepat tidak seragam
Ukuran berkas halaman tidak boleh diputuskan hanya dari rumus tetap seperti «1,5 kali RAM». Microsoft menjelaskan bahwa ukuran yang sesuai berbeda per sistem pada dua poin berikut, dan tidak dapat digeneralisasi.2
- System Commit Charge puncak
- Dump crash sistem yang dibutuhkan
Dalam praktik, pikirkan dalam urutan berikut.
10.1. Mulai dari dikelola sistem sebagai dasar
Default Windows adalah dikelola sistem. Ia tumbuh dan menyusut sesuai RAM terpasang, permintaan Commit, kebutuhan dump crash, dan semacamnya. Kecuali ada batasan khusus atau hasil pengukuran, mulai dari sini adalah pilihan yang aman.
10.2. Ukur Commit puncak di bawah beban representatif
Kumpulkan penghitung berikut di PerfMon dalam jangka panjang.
Memory\\Committed BytesMemory\\Commit LimitMemory\\% Committed Bytes In UseMemory\\Modified Page List BytesPaging File(*)\\% UsageMemory\\Available MBytesMemory\\Page Reads/secMemory\\Page Writes/sec
Sertakan puncak aktual dalam periode pengumpulan — pemrosesan akhir bulan, cadangan, build, beberapa pengguna sekaligus, dan seterusnya.
Persentase pemakaian berkas halaman yang tinggi saja tidak membuktikan masalah kinerja penyimpanan. Namun menempel di plafon adalah peringatan kapasitas tidak cukup. Lihat bersama apakah Commit mendekati plafon, apakah banyak Modified menunggu, dan apakah disk jenuh.2
10.3. Putuskan kebutuhan dump dulu
Putuskan apakah dump memori lengkap diperlukan, apakah dump memori kernel cukup, atau apakah akan memakai berkas dump khusus. Jika diubah ke ukuran tetap, ukuran itu harus memenuhi bukan hanya Commit puncak, tetapi juga kebutuhan dump.
11. Lihat sendiri
11.1. Melihat daftar halaman di RAMMap
Mulai RAMMap sebagai administrator dan buka Use Counts dulu.7 Item yang dilihat adalah berikut.
- Active
- Standby
- Modified
- Modified no write
- Free
- Zeroed
Priority Summary memungkinkan memastikan Standby terbagi menurut prioritas. Processes menampilkan Working Set tiap proses; File Summary dan File Details memungkinkan mengikuti data berkas yang ada di RAM.
Sebagai percobaan, baca sekali berkas lokal yang cukup besar, akhiri pembacaan, lalu Refresh. Halaman berkas itu mungkin tetap di File Summary atau di sisi Standby. Membaca berkas yang sama lagi dapat mengembalikan halaman yang belum dipakai ulang tanpa I/O disk, atau dengan I/O yang lebih sedikit. Hasil bervariasi menurut tekanan memori, antivirus, dan ukuran berkas, jadi lihat arah transisi keadaan, bukan satu set angka.
Catat bahwa menu Empty RAMMap mengubah keadaan sistem secara buatan. Jangan mengosongkan Standby sebagai operasi perbaikan kinerja di mesin produksi; pakai hanya di lingkungan uji yang terisolasi.
11.2. Memisahkan Commit dan Touch dengan Testlimit
Testlimit adalah alat Sysinternals yang mensimulasikan kekurangan sumber daya memori, handle, proses, thread, dan semacamnya. Pertama jalankan perintah berikut terhadap biner yang ada di tangan, dan pastikan versi serta usage yang ditampilkan.
.\\testlimit64.exe -?
Berikut menargetkan Testlimit v5.24. Dalam sintaks resmi v5.24, -m [MB] mengalokasikan jumlah memori yang ditentukan, -d [MB] mengalokasikan dan Touch, -e [seconds] adalah interval alokasi, dan -c [count] adalah jumlah alokasi. Tentukan -c paling akhir. Jika tampilan di mesin sendiri berbeda, utamakan usage itu.12
Lalu coba dalam skala kecil di VM sekali pakai.
# -m 64: alokasikan 64 MiB, -e 1: interval 1 detik, -c 8: berhenti setelah 8 kali
.\\testlimit64.exe -m 64 -e 1 -c 8
# Jumlah dan interval yang sama, dengan -d agar tiap wilayah di-Touch
.\\testlimit64.exe -d 64 -e 1 -c 8
Sambil berjalan, catat berikut secara bersamaan.
- «Committed X/Y» di Task Manager
- Active, Modified, dan Standby di RAMMap
Memory\\Committed BytesMemory\\Commit LimitMemory\\Available MBytesMemory\\Modified Page List Bytes
Jika kehabisan Commit benar-benar direproduksi, jangan lakukan di PC host; naikkan jumlah langkah demi langkah di VM yang sudah di-snapshot. Eksekusi yang otomatis mengalokasikan sampai plafon dapat membekukan layar, menghentikan proses secara tidak normal, dan membuat log hilang. Tujuannya bukan membuat OS tidak stabil, melainkan mengamati bahwa saat mendekati Commit Limit, Commit baru gagal.
12. Empat salah baca yang dihindari dalam praktik
12.1. «Standby tinggi, jadi kebocoran memori»
Standby adalah cache yang dapat dipakai ulang dan termasuk dalam Available. Kebocoran dinilai dari apakah garis dasar Commit privat proses dan rincian alokasi terus tumbuh bahkan setelah beban berakhir.
12.2. «Memotong Working Set akan memperbaiki kebocoran»
Pemangkasan hanya mengubah residensi; ia tidak membebaskan Commit atau alokasi virtual. Saat diakses lagi, halaman kembali lewat fault.
12.3. «Pemakaian berkas halaman 0, jadi tidak diperlukan»
Berkas halaman menopang bukan hanya jumlah tulis saat ini, tetapi juga Commit Limit dan dump crash. Memutuskan menghapusnya hanya dari pemakaian sehari-hari berarti kehilangan kelonggaran saat puncak dan bukti saat gagal.
12.4. «Kompresi memori dulu, lalu selalu berkas halaman»
Kompresi bukan pipa serial yang tetap. Windows memilih secara dinamis menurut jenis halaman, efisiensi kompresi, beban CPU, tekanan memori, dan ada tidaknya backing store.
13. Ringkasan
- Basis data PFN adalah buku besar yang menelusuri kepemilikan, referensi, perubahan, dan keadaan daftar halaman fisik.
- Halaman clean yang keluar dari Working Set tetap di Standby, dan jika isi yang sama dibutuhkan dapat kembali lewat soft fault.8
- Halaman dirty menunggu di Modified dan ditulis kembali ke berkas halaman jika privat, atau ke berkas yang sesuai jika dipetakan, dan seterusnya.3
- Available adalah jumlah Standby, Free, dan Zeroed; Standby yang besar saja bukan kekurangan memori.1
- Kompresi memori mengompres halaman di dalam RAM untuk mengurangi I/O, tetapi tidak menghapus peran Commit dan berkas halaman.10
- Berkas halaman menopang Commit Limit, halaman privat yang diubah, dan dump crash sistem.42
- Ukuran yang sesuai ditentukan Commit puncak dan kebutuhan dump; tidak dapat diputuskan dengan pengali yang seragam.2
- Pemangkasan Working Set dan pengosongan Standby bukan perbaikan kebocoran memori.
Bersambung di bagian 3, «Objek section dan copy-on-write: wujud DLL dan pemetaan berkas».
Artikel itu mengikuti mengapa halaman berkas dan DLL yang tetap di Standby terlihat dari beberapa proses sebagai halaman fisik yang sama.
Artikel terkait
- Kedalaman memori Windows (bagian 1) — Saat alamat virtual menjadi RAM fisik
- Apa arti “pemakaian memori” Windows sebenarnya? — Membaca Working Set, Private Bytes, Commit, dan page file dengan benar
- Kedalaman I/O Windows (bagian 4) — Cache Manager dan WriteFile
- Pengantar pengumpulan crash dump aplikasi Windows
- Process Explorer / Handle / VMMap dalam praktik
Area konsultasi terkait
KomuraSoft LLC menangani investigasi tekanan memori aplikasi Windows, kehabisan Commit, paging, pertumbuhan Working Set, dan desain pengumpulan dump crash.
Tautan referensi
-
Microsoft Learn, MEMORYSTATUSEX structure. Tentang
ullAvailPhyssebagai memori fisik yang dapat langsung dipakai ulang tanpa menulis ke disk, dan merupakan jumlah daftar Standby, Free, dan Zeroed. ↩ ↩2 ↩3 -
Microsoft Learn, How to determine the appropriate page file size for 64-bit versions of Windows. Tentang ukuran yang sesuai bergantung pada Commit puncak dan kebutuhan dump crash serta tidak dapat digeneralisasi; daftar Modified, pemakaian berkas halaman, penghitung terkait, dan berkas halaman yang dikelola sistem. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8
-
Microsoft Learn, Data corruption on IO write. Tentang Modified Page Writer sebagai pekerja sistem manajer memori yang memindai halaman dirty bertopang berkas halaman dan menulisnya. ↩ ↩2 ↩3
-
Microsoft Learn, Introduction to page files. Tentang berkas halaman yang mengeluarkan halaman yang diubah dan jarang diakses dari RAM, memperlebar Commit Limit, dan menopang dump crash sistem. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, !pfn (WinDbg). Tentang dapat menampilkan keadaan, referensi, alamat PTE, dan lainnya dari entri PFN yang ditentukan. ↩
-
Microsoft Learn, !memusage (WinDbg). Tentang dapat menjumlahkan pemakaian memori fisik dan keadaan halaman seperti Zeroed, Free, Standby, Modified, dan Active. ↩
-
Microsoft Learn, RAMMap - Sysinternals. Tentang Use Counts, Processes, Priority Summary, Physical Pages, File Summary, dan File Details RAMMap yang menampilkan tujuan memori fisik dan daftar halaman. ↩ ↩2
-
Microsoft Learn, Working Set. Tentang manajer memori memangkas Working Set untuk membuat memori tersedia, dan tentang halaman yang tetap di Transition atau di Working Set proses lain yang dapat diselesaikan lewat soft fault. ↩ ↩2
-
Microsoft Learn, FileIo_Name class. Tentang peristiwa File I/O ETW yang punya FileObject dan FileName, sehingga FileObject dapat dicocokkan dengan peristiwa Disk I/O untuk mengidentifikasi I/O ke berkas sasaran. ↩
-
Windows Insider Blog, Announcing Windows 10 Insider Preview Build 10525. Tentang implementasi compression store awal Windows 10 yang menempatkan kumpulan halaman terkompresi di RAM ke dalam Working Set proses System dan mengurangi penulisan ke disk. ↩ ↩2
-
Microsoft Learn, Find Process ID (PID) in Windows. Tentang contoh daftar proses Debugging Tools for Windows terkini yang menampilkan proses
Memory Compressiondengan PID terpisah di bawah System. ↩ -
Microsoft Learn, Testlimit - Sysinternals. Tentang sintaks resmi Testlimit v5.24 di mana
-mmengalokasikan memori,-dmengalokasikan dan Touch,-eadalah interval alokasi, dan-cadalah jumlah alokasi, dengan-cditentukan paling akhir. ↩
Artikel terkait
Artikel terbaru dengan tag yang sama untuk mendalami topik-topik terdekat.
Apa yang sebenarnya diukur "pemakaian memori" Windows — membaca Working Set, Private Bytes, Commit, dan page file dengan benar
Kolom Memory di Task Manager, Working Set, Private Bytes, dan Commit bukan angka yang sama. Artikel ini menjelaskan hubungan memori virtu...
Kedalaman memori Windows (bagian 1) — Saat alamat virtual menjadi RAM fisik: page fault dari awal sampai akhir
Artikel ini menghubungkan VirtualAlloc, VAD, tabel halaman, TLB, demand-zero, dan hard fault, lalu menjelaskan saat alamat virtual mendap...
Kedalaman memori Windows (bagian 3) — Objek section dan copy-on-write: wujud DLL dan pemetaan berkas
Artikel ini merangkai objek section, pemetaan image dan data, cache bersama, serta copy-on-write untuk menjelaskan bagaimana DLL dan memo...
Kedalaman virtualisasi Windows (Bagian 3) — VM yang siap dalam hitungan detik: apa yang membuat WSL2, Windows Sandbox, dan kontainer terasa ringan
Mengapa WSL2 dan Windows Sandbox boot dalam hitungan detik dan terasa ringan. Artikel ini menguraikan mekanismenya, dari dynamic base ima...
Kedalaman virtualisasi Windows (Bagian 2) — Memori yang bahkan kernel pun tidak bisa lihat: mekanisme VBS, HVCI, dan Credential Guard
Pada instalasi bersih ke perangkat keras yang kompatibel, VBS aktif secara bawaan. Hypervisor dan SLAT membentuk isolasi yang lebih kuat ...
Topik terkait
Halaman-halaman ini menempatkan topik dalam konteks layanan dan keputusan yang lebih luas.
Topik teknis Windows
Portal tentang pengembangan Windows, investigasi bug, dan pemanfaatan aset yang ada.
Layanan yang terkait dengan topik ini
Artikel ini berkaitan langsung dengan layanan berikut.
Pengembangan aplikasi Windows
Aplikasi bisnis, integrasi perangkat, dan alat komunikasi, dari kebutuhan hingga pengembangan.
Pertanyaan yang sering diajukan
Pertanyaan yang sering muncul dalam konsultasi tentang topik artikel ini.
- Apakah halaman yang keluar dari Working Set langsung ditulis ke berkas halaman?
- Tidak. Halaman yang tidak diubah pindah ke Standby dengan isinya tetap, dan menjadi cache yang dapat segera dipakai ulang. Halaman yang sudah diubah pindah ke Modified; setelah ditulis kembali ke berkas halaman atau ke berkas yang sesuai jika perlu, halaman itu maju ke keadaan yang dapat dipakai ulang seperti Standby.
- Apakah Available di Task Manager mencakup memori Standby?
- Ya. Memori fisik tersedia yang dilaporkan Windows adalah jumlah Standby, Free, dan Zeroed. Standby masih menahan isi lama, tetapi karena dapat segera dipakai ulang untuk tujuan lain jika perlu, ia dihitung sebagai memori tersedia.
- Apakah penulisan ke berkas halaman baru dimulai setelah RAM habis sama sekali?
- Tidak. Windows menulis kembali halaman yang diubah dan jarang diakses di latar belakang, sesuai daftar Modified dan keadaan memori tersedia. Ini bukan mekanisme sederhana yang menunggu kehabisan mutlak lalu mengusir semuanya sekaligus.
- Apakah menonaktifkan berkas halaman membuat Windows lebih cepat?
- Secara umum tidak dapat dipastikan akan lebih cepat. Menonaktifkannya menurunkan Commit Limit, mempersulit mengeluarkan halaman yang diubah dan jarang diakses dari RAM, dan memengaruhi dump crash sistem. Biasanya biarkan dikelola sistem, lalu putuskan setelah mengukur Commit puncak dan kebutuhan dump.
- Jika ada kompresi memori, apakah berkas halaman tidak diperlukan?
- Tidak menjadi tidak diperlukan. Compression store mengompres halaman di dalam RAM untuk mengurangi I/O, tetapi halaman terkompresi tetap memakai memori fisik dan tidak mengganti jaminan Commit. Pilihan antara kompresi dan paging out adalah kebijakan dinamis manajer memori.
Profil penulis
Halaman perkenalan penulis artikel.
Go Komura
Direktur KomuraSoft LLC
Berspesialisasi dalam pengembangan perangkat lunak Windows, konsultasi teknis, dan investigasi bug, terutama pada proyek dengan sistem yang sudah ada dan bug yang sulit direproduksi.