Saya telah mengalami masalah di mana, jika sistem saya aktif selama beberapa hari tanpa reboot, saya akan mulai mendapatkan peringatan yang mengatakan "Tutup program untuk mencegah kehilangan informasi" dan kemudian dialog yang menyarankan saya menutup program, yang dapat saya batalkan atau tekan "tutup program" dan Windows akan menutup paksa sebagian atau semua aplikasi yang tercantum dalam dialog.
Saya membuka task manager, dan melihat bahwa hanya sekitar 30% dari memori saya saat ini sedang digunakan:
Ketika saya membuka monitor sumber daya untuk melihat seberapa banyak memori yang dikomit digunakan oleh aplikasi tertentu, saya masih melihat penggunaan memori yang relatif rendah:
Saya punya masalah ini untuk sementara dan telah berjuang untuk menemukan solusi. Saya telah menyelidiki penyebab seperti kebocoran driver dengan menggunakan poolmon, tetapi tidak pernah melihat apa pun di poolmon yang cocok dengan apa yang orang lain gambarkan sebagai bendera merah untuk kebocoran memori driver. Apa yang membuat saya sangat bingung adalah mengapa Win10 mengatakan kepada saya untuk menutup aplikasi ketika saya hanya memiliki 33% dari memori sistem yang digunakan.
sumber
Jawaban:
Tebakan liar di sini.
Anda telah menonaktifkan file swap Anda, mengikuti saran acak "mengoptimalkan" seseorang.
Anda memiliki semacam driver OS yang menginginkan sejumlah besar RAM fisik berturut-turut. Tetapi tidak bisa mendapatkannya karena semua RAM fisik telah terfragmentasi dari waktu ke waktu. Dan karena file swap dinonaktifkan, itu tidak dapat melakukan defragment RAM.
Aktifkan file swap Anda.
Seperti yang saya katakan, tebakan liar.
sumber
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.
sumber
Kemungkinan lain adalah Anda menggunakan Win10 32-bit, bukan 64 bit. Meskipun Anda memiliki 16GB RAM diinstal, ada batasan OS 32-bit yang praktis menggunakan di atas 4 jerawatan. Selanjutnya, OS akan mengenakan batasan keras / per proses / pada jumlah RAM yang dapat diminta, terlepas dari RAM fisik. Jika itu masalahnya, tidak banyak yang dapat Anda lakukan selain beralih ke OS 64-bit atau menjalankan lebih sedikit aplikasi secara bersamaan.
sumber