Bagaimana cara membuat Windows 7 kurang agresif dalam memori cache?

16

Saya baru-baru ini mencatat bahwa Windows 7 pada komputer saya telah mengeluh kehabisan memori dan bahwa saya harus menutup beberapa program. Maka biasanya akan menunjukkan program yang saya jalankan yang memang memiliki kebocoran memori dan telah tumbuh cukup besar. Namun, biasanya program-program ini mulai dari penggunaan RAM 20MB dan hanya setelah menjalankan program antara 12 hingga 24 jam mereka tumbuh, paling banyak, penggunaan RAM 200MB. Saya tidak pernah memiliki lebih dari tiga program ini berjalan pada saat yang sama, jadi penggunaan RAM sebesar 600MB yang pernah saya lihat dari program yang saya jalankan.

Saya menjalankan Windows 7 x64 pada mesin dengan 4GB RAM. Pada awalnya saya benar-benar lupa ini dan hanya akan me-restart program ketika Windows mengeluh, tetapi sekarang saya ingat, fakta bahwa Windows mengeluh tentang saya menggunakan 600MB RAM (di bawah 2GB bahkan jika Anda memasukkan memori yang digunakan oleh OS itu sendiri) tampak aneh . Jadi saya membuka jendela proses sistem untuk melihat total penggunaan memori dari proses dan proses sistem yang terdaftar. Itu menambahkan hingga lebih dari 700MB, jadi saya masih bingung. Lalu saya pergi ke Resource Monitor dan membuka tab Memory. Di sana saya pikir saya menemukan jawaban saya. Tercatat bahwa saya sebenarnya hanya menggunakan 33% dari RAM saya. Namun, pada bilah alokasi sumber daya Memori Fisik, bagian Modifikasi hingga 2.3GB, bagian Siaga hingga 540MB, bagian Gratis di bawah 20MB, Memori cache dicatat di 2. Memori 8GB dan Tersedia terdaftar di 550MB. (Nilai-nilai ini agak membulat, tentu saja, karena nilai Anda terus berubah saat saya menulis ini.)

Jadi ternyata Windows 7 menggunakan lebih banyak memori daripada saya. Saya memang, pada beberapa titik di masa lalu, membuat beberapa modifikasi pada menu layanan Windows yang terinstal tapi itu hanya untuk menonaktifkan layanan hosting tertentu, karena saya tidak ingin melakukan berbagi media, untuk mengaktifkan klien Telnet, dan menghapus Internet Explorer, tapi itu bisa jadi salahku. Apakah ada cara untuk membuat Windows tidak melakukan ini atau setidaknya cache jauh kurang agresif sehingga saya berhenti mendapatkan pemberitahuan "Memori Rendah" ini?

grg-n-sox
sumber
2
OP salah paham masalah. Dia kehabisan memori virtual yang didukung. Semua analisisnya tentang ingatan fisik tidak relevan. Anda dapat memiliki banyak memori fisik gratis tetapi memori virtual yang didukung gratis tidak mencukupi dan peringatan memori yang muncul adalah peringatan tentang memori virtual yang didukung kekurangan pasokan, bukan memori fisik. (Meskipun kebocoran memori fisik dari pengemudi dapat menyebabkan masalah secara tidak langsung.)
David Schwartz
"OP salah paham masalah." Seperti yang dilakukan beberapa penjawab. :(
Jamie Hanrahan

Jawaban:

10

Memori siaga bukan masalah, itu dianggap "gratis" dan akan dialokasikan kembali berdasarkan permintaan - hanya berisi memori yang baru-baru ini digunakan oleh program, tetapi sekarang dibebaskan. Jika program lain meminta lebih banyak memori daripada "Gratis", sistem harus mengalokasikan dari Siaga yang ditetapkan secara mulus (karena memori "siaga" tidak benar-benar digunakan saat ini).

Memori Modifikasi Anda yang berlebihan adalah masalah Anda, karena tidak dapat dialokasikan kembali dengan mudah. Lihat di sini . Ini kemungkinan disebabkan oleh kebocoran memori (yang tampaknya sesuai dengan paragraf pertama Anda - program apa yang bocor?) Atau file halaman terlalu kecil (apakah file halaman Anda berukuran tetap atau dinonaktifkan?).

DMA57361
sumber
3
Seperti yang saya catat dalam komentar saya untuk jawaban CJM, saya menutup semua aplikasi saya yang dipertanyakan (beberapa game PC indie) dan hanya memiliki Pengelola Tugas, Pengawas Sumber Daya, AVG, dan Chrome yang berjalan sekarang tetapi masih memiliki memori modifikasi 1,6GB. Saya meninggalkan komputer saya selama berhari-hari, yang cocok dengan profil dalam artikel yang Anda tautkan. Namun, catatan pada halaman web itu adalah untuk mencari proses dengan ukuran komit besar. Saat ini itu adalah proses dari nSvcAppFlt.exe. Ini hanya memiliki ukuran set bekerja 30MB tetapi ukuran komit 13,5GB. Apa yang menyebabkannya?
grg-n-sox
2
Itulah program yang membocorkan memori Anda. Juga lihat social.answers.microsoft.com/Forums/en-US/w7performance/thread/… . Hapus dan semuanya harus baik-baik saja.
akid
Terima kasih banyak. Sebenarnya itu agak bagus. Jadi pada dasarnya jika saya memperhatikan RAM saya sedang habis, saya bisa pergi ke monitor sumber daya saya, melihat apakah bagian memori yang dimodifikasi sangat besar, dan melihat proses apa yang memiliki ukuran komit besar dan saya menemukan program kebocoran memori saya? Jelas alat diagnostik yang bagus untuk Windows.
grg-n-sox
Nonaktifkan atau tingkatkan perangkat lunak firewall Nvidia Anda.
David Schwartz
Anda memiliki tiga "Anda" yang seharusnya menjadi "milik Anda" pada paragraf terakhir. (tidak dapat menyarankan sunting, terlalu kecil.)
Shadow The Burning Wizard
4

Caching pre-emptive SuperFetch bukan masalah Anda. Windows 7 akan menggunakan memori cadangan sebanyak yang Anda bisa untuk melakukan cache terlebih dahulu apa yang menurutnya akan Anda butuhkan selanjutnya. Jika itu benar, itu akan menghemat sedikit waktu dan aplikasi Anda tampak lebih cepat dan lebih responsif.

Jika tebakan salah, dan Anda memerlukan beberapa data lain, Superfetch akan merilis sebagian dari memori yang dimilikinya, untuk memungkinkan Anda memuat data yang benar-benar Anda butuhkan. Lihat: http://arstechnica.com/microsoft/news/2010/02/behind-the-windows-7-memory-usage-scaremongering.ars

Jika Anda mendapatkan masalah 'memori rendah', itu bukan karena SuperFetch - karena akan melepaskan sebanyak mungkin memori yang diperlukan jika aplikasi memintanya. Memori Anda yang tersedia (550MB) adalah apa yang digunakan oleh superfetch, jadi jelas Anda belum kehabisan memori. Bahkan ketika Anda menggunakan semua RAM Anda, mesin Anda akan jatuh kembali ke memori virtual, meskipun Anda ingin menghindari ini karena ...

Jadi itu menunjukkan Anda masalah 'memori rendah' ​​karena masalah di tempat lain - mungkin salah satu aplikasi bocor Anda mengkonsumsi (dan tidak melepaskan) jenis sumber daya lain ...

Either way, solusinya lebih mungkin ditemukan dengan menangani aplikasi kereta Anda, daripada dengan main-main dengan SuperFetch ...

CJM
sumber
Saya mendapatkan bahwa bagian memori Standby adalah bagian dari memori yang di-cache, tetapi saya benar-benar harus meragukan masalahnya adalah program saya. Saya baru saja menutup semuanya sekarang sehingga semua yang saya jalankan adalah AVG, Task Manager, Resource Monitor, dan satu jendela Chrome dengan 4 tab. Hanya memiliki 1042MB yang digunakan dengan memori Tersedia 1417MB, tapi saya masih memiliki sebagian besar memori Modified mengambil 1633MB bahwa Task Manager menghitung sebagai memori yang digunakan dan memberi saya pemberitahuan memori rendah. Apakah ada cara untuk mengurangi jumlah memori yang Dimodifikasi atau hanya mematikan pemberitahuan memori rendah?
grg-n-sox
0

Karena Anda tidak berpikir masalah ini disebabkan oleh program dengan kebocoran memori, alternatifnya adalah meningkatkan ukuran file halaman Anda.

Walaupun file halaman bukan memori utama Anda, itu akan memungkinkan sistem operasi untuk menukar lebih banyak data ke hard drive, dan mudah-mudahan, menghentikan pesan "kehabisan memori". Satu-satunya pilihan lain adalah menghapus program yang terkait dengan proses yang memiliki cetakan kaki 13GB yang besar, meskipun saya tidak tahu program apa yang perlu untuk memuat memori sebanyak itu, kecuali itu adalah permainan PC kelas atas atau perangkat lunak render 3D.

Britton
sumber
0

Dari pengalaman saya Creep memori siaga adalah masalah nyata. Sebagai contoh, jika saya menjalankan Snagit dalam mode rolling-windows untuk artikel yang panjang akan ada bagian dari artikel yang tidak ditangkap ketika dijalankan hanya pada memori Standby. Bagaimanapun, saya menemukan bahwa komputer saya berjalan lambat pada memori Siaga.

Untuk mengatasi masalah ini saya menggunakan pengoptimal memori dari Glary Utilities gratis. Komputer saya memiliki 6 GIG memori. Ketika saya pertama kali boot, saya memiliki sekitar 2 GIG memori yang digunakan, 2 GIG siaga, dan 2 GIG dari apa yang saya sebut memori bebas Gratis menurut Monitor Sumber Daya Windows. Dalam setengah hari atau lebih, semua memori Free-Free saya akan berubah menjadi memori Siaga apakah saya menggunakan komputer atau tidak. Sekarang saya memiliki pengoptimal memori Glary Utilities memulai dengan Windows dan dapat menjaga komputer saya berjalan tanpa batas untuk mendapatkan 2 GIG penuh dari memori Bebas-Bebas yang tersedia.

Setiap kali saya duduk untuk sesi lain saya pertama kali klik dua kali ikon baki pengoptimal memori dan melakukan optimasi; meminta 2 GIG memori bebas-bebas asli saya untuk dibebaskan. Saya dapat meminta lebih banyak tapi itu maksimum akan terlepas. Diperlukan sekitar 30 detik untuk pengoptimal untuk menyelesaikan yang jauh lebih sedikit daripada yang diperlukan untuk boot ulang. Ini memiliki mode optimisasi otomatis tetapi saya belum dapat menemukan cara untuk membuatnya bekerja.

James Horner
sumber
Memori siaga tidak menjadi masalah.
Jamie Hanrahan
"Pengoptimal memori" harus dihapus. Standby RAM adalah RAM yang baru-baru ini "digunakan" dalam proses. Itu dikeluarkan dari proses-proses itu karena penggantian set bekerja, tetapi masih berisi apa yang dilakukannya ketika "digunakan". Jika suatu proses membutuhkan apa yang ada di salah satu halaman tersebut, halaman tersebut dapat dikembalikan ke proses dengan cepat. Itu sebabnya Siaga dianggap bagian dari hitungan "Cache". Tapi Standby juga sama "Tersedia" untuk penggunaan lain seperti RAM Gratis. "Pengoptimal memori" Anda baru saja memindahkan banyak halaman dari Siaga ke Gratis, yaitu Anda menembak cache Siaga [...]
Jamie Hanrahan
[...] tanpa membuat lebih banyak RAM tersedia. Karena "Siaga" selalu "Tersedia" toh! Dengan Vista dan yang lebih baru, Superfetch sekarang dapat menggunakan bagian dari Siaga untuk caching file proaktifnya, tetapi halaman-halamannya masih dapat digunakan kembali untuk digunakan oleh proses lain sesuai kebutuhan. Jadi SuperFetch juga tidak mengambil halaman dari "Tersedia". Singkirkan "memory manager", itu merusak kinerja sistem Anda, menyebabkan I / Os disk yang tidak perlu.
Jamie Hanrahan
-1

Untuk Mengatasi masalah ini

Pergi mulai-jalankan-msconfig, kemudian layanan dan hapus centang dari "Windows driver foundation". klik ok dan nyalakan ulang mesin.

Ingat - Hanya langkah yang disebutkan di atas yang akan menyelesaikan masalah ini. Jika Anda telah menonaktifkan dari services.msc, ini masih aktif pada saat boot OS dan itu akan memblokir memori Anda.

Untuk memverifikasi ini gunakan alat

pengguna261975
sumber
Menonaktifkan layanan WDF akan menonaktifkan perangkat apa pun yang bergantung pada model driver itu. Itu ide yang buruk.
Jamie Hanrahan