Re Q terakhir Anda - versi singkat: Pesan kesalahan adalah tentang "berkomitmen" ruang alamat virtual. Jika Anda melihat grafik Biaya Komit di snapshot layar kedua Anda, Anda akan melihat bahwa itu memang pada atau sangat dekat batas.
Jumlah RAM yang "bebas", "tersedia", atau "digunakan" tidak masalah. Khususnya kekurangan "tersedia" RAM sama sekali bukan alasan untuk pesan "rendah pada memori" atau "kehabisan memori".
Batas komit sama dengan total ukuran RAM + pagefile. Ketika memori yang dialokasikan dialokasikan, maka segera dibebankan ke "biaya komit" meskipun sebenarnya belum digunakan ... yang berarti bahwa tidak ada ruang RAM atau PF yang digunakan segera. Ruang fisik (apakah dalam RAM atau pagefile) hanya digunakan ketika memori sebenarnya direferensikan. Sejak saat itu harus ada suatu tempat, sampai program membebaskannya, atau seluruh proses berakhir.
Contoh: Misalkan Anda tidak memiliki pagefile, maka batas komit Anda adalah 16 GB (ukuran RAM Anda). Sekarang, anggaplah 8 proses masing-masing mencoba ke VirtualAlloc (MEM_COMMIT) 1 GB. Hasil: Biaya komit meningkat sebesar 8 GB. Namun, tidak ada dampak langsung pada RAM! Seolah-olah Anda membeli kertas di toko alat tulis, tetapi Anda tidak benar-benar mendapatkan kertas. Namun, setiap kali Anda membutuhkan lembar baru, satu lembar akan muncul secara ajaib. Sampai Anda menggunakan seluruh pad (ukuran wilayah yang dialokasikan).
Sekarang anggaplah masing-masing proses tersebut hanya benar-benar mengakses 100 MB dari 1 GB-nya. RAM yang digunakan hanya akan menjadi 800 MB.
Tetapi karena masing-masing dari mereka mungkin mereferensikan semua 1 GB-nya, OS harus memastikan bahwa 8 GB RAM + ruang pagefile ... well, hanya RAM jika tidak ada pagefile ... tetap tersedia hanya dalam kasus yang terjadi . Kembali ke toko alat tulis, mereka harus menyimpan stok kertas yang cukup untuk memberi semua orang sebanyak lembar yang mereka beli sebelumnya.
Karenanya, OS harus berhenti memungkinkan VirtualAlloc (MEM_COMMIT) untuk berhasil ketika jumlah saat ini mencapai batas.
Mengapa? Karena proses ini diharapkan untuk memeriksa hasil VirtualAlloc untuk melihat apakah itu berhasil. Setelah itu dilakukan dan menemukan bahwa alokasi berhasil, proses memiliki hak untuk berharap bahwa rujukan selanjutnya ke seluruh wilayah berkomitmen akan berhasil.
Jika Windows mengizinkan biaya komit untuk melebihi jumlah ruang yang tersedia untuk mewujudkan ruang itu, maka harapan itu tidak selalu dapat dipenuhi.
Solusi cepat adalah untuk meningkatkan ukuran default (= awal) dari pagefile Anda. Dari penjelasan di atas Anda harus dapat melihat mengapa ini akan menghindari pesan kesalahan meskipun tidak ada yang pernah ditulis ke file itu . Sekali lagi, OS memastikan bahwa ruang untuk semua biaya komit tersedia jika diperlukan . Ketika proses mengalokasikan memori yang dikomit, mereka hanya mengatakan "hei, OS, saya mungkin membutuhkan ini." Itu tidak berarti mereka akan benar-benar menggunakannya, dan itu tentu saja tidak berarti mereka sudah menggunakannya.
Untuk lebih lanjut, lihat jawaban saya di sini .
Sekarang .... mengapa Anda menggunakan komit sebanyak itu ketika proses Anda sepertinya tidak cocok dengan itu adalah pertanyaan lain. Untuk mulai melihat itu, tunjukkan tab Performance Task Manager, bagian Memory.