Mengapa total penggunaan memori yang dilaporkan oleh Windows Task Manager jauh lebih tinggi dari jumlah penggunaan memori semua proses? [duplikat]

98

Task Manager menunjukkan penggunaan memori total saya pada 90% dari total 6 GB saya, tetapi tidak ada proses tunggal yang menggunakan lebih dari 250 MB RAM, dan jumlah penggunaan RAM dari semua proses yang berjalan kurang dari 2 GB. Saya sudah mencoba:

  • Melihat angka-angka di kolom "Memori" pada tab "Proses" pada Windows 8 Task Manager.
  • Melihat kolom "Perangkat Kerja", "Perangkat Kerja Privat", "Perangkat Kerja Bersama", dan "Ukuran Komit" pada tab "Detail" pada Task Manager.
  • Melihat kolom terkait memori serupa di Process Explorer.
  • Saya sudah mencoba menjalankan Sysinternals RAMMap, tetapi sementara saya mengalami krisis memori rendah, ia crash saat diluncurkan. Setelah saya menyelesaikan masalah, RAMMap berjalan secara normal, tetapi pada saat itu sudah terlambat.

Semua menunjukkan sejumlah kecil memori yang digunakan.

Ada banyak orang yang menanyakan varian pertanyaan ini, dengan berbagai versi windows, di seluruh Internet. Beberapa dari mereka berhasil menyelesaikan masalah dengan memori rendah, seringkali dengan menginstal ulang perangkat lunak; kadang-kadang dengan menginstal ulang windows dari awal. Saya mencari jawaban untuk pertanyaan umum yang dibagikan oleh semua orang ini, dan sepertinya tidak pernah dijawab di tempat lain:

  1. Mengapa total memori yang digunakan jauh lebih tinggi daripada memori yang digunakan oleh semua proses yang terdaftar, tidak peduli bagaimana saya mencoba menghitungnya?
  2. Bagaimana windows bisa "tahu" bahwa memori digunakan tanpa mengetahui program apa yang menggunakannya?
  3. Proses apa yang mungkin menggunakan memori tetapi tidak muncul dalam daftar?
  4. Apakah ada perangkat lunak di luar sana yang dapat memberikan informasi lebih lanjut tentang memori yang digunakan?

Detail khusus untuk masalah saya sendiri: Sejak memutakhirkan ke Windows 8.1, Masalah terjadi segera setelah saya masuk. Saya kehabisan memori segera setelah saya menjalankan program apa pun. Saya perhatikan di Process Explorer bahwa beberapa contoh iexplore.exe sedang berjalan, tampaknya mulai secara otomatis. Satu contoh khusus hanya menggunakan beberapa MB RAM, tetapi menunjukkan ratusan juta kesalahan halaman. Karena kemauan, saya membunuh proses tertentu, dan penggunaan memori segera turun 70%.

Mengarah ke satu pertanyaan spesifik:

  • Bagaimana bisa membunuh satu proses yang seharusnya hanya menggunakan beberapa MB membebaskan beberapa GB?

Dan pertanyaan bonus (mungkin sulit):

  • Kurang menginstal ulang Windows, bagaimana saya bisa menghindari harus melalui ini setiap kali saya reboot komputer saya?
Josh
sumber
3
juga memori kernel diperhitungkan dalam penggunaan. Posting gambar RAMMAp: blogs.technet.com/b/askperf/archive/2010/08/13/…
magicandre1981
2
Saya pikir pertanyaannya harus berjudul "Mengapa saya kehabisan memori."
surfasb
Pertanyaan ini tidak mungkin dijawab tanpa spesifik. Daftar program yang diinstal. Atau lebih baik lagi, setumpuk proses yang berjalan dari Monitor Kinerja.
surfasb
1
Apakah Anda benar-benar mematikan / me-restart komputer Anda sepenuhnya atau Anda menggunakan hybrid shutdown (default di Windows 8)? Setelah beralih ke Windows 8 saya punya masalah serupa. Saya berasumsi satu driver mengambil lebih banyak dan lebih banyak RAM fisik saya dan tidak mengembalikannya, bahkan setelah mematikan dan menghidupkan komputer. Dalam beberapa minggu itu terakumulasi menjadi beberapa gigabytes. Jadi sekarang setiap beberapa hari saya klik "restart" atau tahan shift sambil mengklik "shut down" untuk benar-benar mematikan PC.
Robert
2
Dalam kasus saya itu adalah memori "Driver Locked", disediakan oleh Hyper-V karena telah mengaktifkan "Memori Dinamis". Saya harus menghentikan semua VM, menonaktifkan pengaturan, dan me-restart mereka. Terima kasih atas saran RAMMap.
Dagelf

Jawaban:

7

Omong-omong, Anda harus mencoba untuk tidak menggunakan istilah "memori". Ini menciptakan banyak kebingungan. Jika yang Anda maksud adalah memori fisik, ucapkan "memori fisik", atau "RAM". Jika Anda maksudkan memori virtual, katakan demikian. Jika Anda maksud mendukung toko, katakan demikian.

Mengapa total memori yang digunakan jauh lebih tinggi daripada memori yang digunakan oleh semua proses yang terdaftar, tidak peduli bagaimana saya mencoba menghitungnya?

Karena sistem operasi tidak membuang memori fisik (RAM) kecuali tidak punya pilihan.

Bagaimana windows bisa "tahu" bahwa memori digunakan tanpa mengetahui program apa yang menggunakannya?

Karena tidak ada program yang menggunakannya. Pertimbangkan, misalnya, memori yang berisi kode untuk program yang baru saja dihentikan. Tidak ada program yang menggunakannya. Tetapi memori itu digunakan, karena tidak bebas dan berisi data yang mungkin berguna (kalau-kalau program berjalan lagi).

Proses apa yang mungkin menggunakan memori tetapi sekarang muncul di daftar?

Itu tidak digunakan oleh proses.

Apakah ada perangkat lunak di luar sana yang dapat memberikan informasi lebih lanjut tentang memori yang digunakan?

RAMMap dapat melakukan ini.

Hanya ada dua kemungkinan, RAM bisa digunakan atau bisa terbuang sia-sia. Jelas, yang pertama lebih baik. Memori bebas apa pun selamanya terbuang sia-sia - mesin 4GB tidak dapat menggunakan 2GB hari ini untuk dapat menggunakan 6GB besok. Jika Anda berpikir "Saya ingin gratis sekarang sehingga saya bisa menggunakannya nanti", lupakan itu. Anda dapat menggunakannya sekarang dan menggunakannya nanti.

Bagaimana bisa membunuh satu proses yang seharusnya hanya menggunakan beberapa MB membebaskan beberapa GB?

Anda kehabisan persediaan backing, bukan memori fisik. Anda memiliki banyak memori fisik gratis tetapi toko dukungan tidak mencukupi untuk OS untuk terus mengalokasikan memori virtual yang mungkin memerlukan dukungan.

Prosesnya hanya menggunakan beberapa MB memori fisik, tetapi OS mungkin harus mencadangkan beberapa GB memori virtual yang didukung untuk itu. Misalnya, anggap suatu proses membuat pemetaan memori pribadi dari file 2GB yang dapat ditulis. OS harus mencadangkan 2GB memori virtual yang didukung untuk proses tersebut, karena mungkin menulis ke setiap byte tunggal dari pemetaan itu. Juga, mungkin tidak pernah menulis kepada mereka. Inilah sebabnya mengapa Anda memerlukan file paging berukuran baik.

Sistem operasi modern menulis banyak cek (toko dukungan menjanjikan) yang tidak akan pernah diuangkan (memerlukan RAM). Anda tidak dapat terus menulis cek (toko backing yang menjanjikan) bahkan jika Anda memiliki banyak uang di bank (RAM gratis) jika Anda telah menulis banyak cek besar yang mungkin atau mungkin tidak akan diuangkan (dijanjikan sebagai toko pendukung sebanyak mungkin) seperti yang kamu punya). File paging menambahkan backing store, memungkinkan OS untuk terus menulis cek.

David Schwartz
sumber
14
PS: Saya menggunakan kata "memori" bukan karena saya tidak tahu perbedaan antara RAM dan VM, tetapi karena komputer saya hanya mengatakan kepada saya bahwa itu keluar dari "memori" tanpa memberi saya informasi sama sekali apa yang sebenarnya cara. (Saya menganggap itu berarti RAM, untuk alasan yang saya tentukan dalam komentar sebelumnya, tapi saya tidak yakin.) Saya lebih suka Anda menggunakan vocab asli (yang dapat saya cari jika perlu) daripada metafora keuangan yang rumit :)
Josh
91
-1 karena setelah membaca jawaban dan semua komentar, masih belum jelas mengapa total memori yang digunakan jauh lebih tinggi daripada memori yang digunakan oleh semua proses yang terdaftar.
Bennett McElwee
6
Terminologi itu, di mana memori "digunakan" meskipun tidak ada program yang menggunakannya, sangat berbeda dengan arti normal dari kata-kata seperti "bekas" dan "bebas" - mungkin itu terminologi Microsoft, bukan milik Anda. Pokoknya, anggaplah misalnya bahwa 50% RAM saat ini digunakan oleh menjalankan program, dan 25% tidak digunakan oleh program yang sedang berjalan tetapi berisi data yang mungkin berguna di masa depan tetapi juga dapat dibuang. Menambahkannya bersama dan menampilkan "Memori: 75%" tidak memberikan informasi yang berguna kepada pengguna. Saya pikir dari sanalah kebingungan tersebar luas.
Bennett McElwee
2
@BennettMcElwee Tidak ada cara yang baik untuk mengurangi penggunaan memori menjadi satu nomor sederhana, tetapi pengguna bersikeras untuk itu. Ini menempatkan pengembang pada posisi yang tidak nyaman - mereka dapat memberikan nomor yang tidak selalu membantu atau tidak memberikan nomor. Sebagian besar pengembang OS dan GUI memilih opsi pertama - mereka menyediakan nomor yang menyebabkan banyak kebingungan. Jika pertanyaan Anda adalah "apakah lebih banyak RAM akan membuat sistem saya bekerja lebih baik", jawabannya adalah - itu sangat, sangat sulit untuk diceritakan, bahkan untuk para ahli.
David Schwartz
2
@ DavidSchwartz Jawaban Anda tidak menjelaskan seperti itu, hanya menyatakannya. Bisakah Anda memberikan tautan apa pun untuk mendukung klaim spesifik itu? Saya menafsirkan "Memori Fisik XX%" yang berarti bahwa XX% dari RAM yang dipasang secara fisik saat ini sedang digunakan dan tidak tersedia untuk proses lain. Saya percaya saya divalidasi oleh fakta bahwa di atas 90% sistem menjadi rentan terhadap penguncian, dan ketika aplikasi mencoba mengalokasikan memori di atas 100%, mereka hancur total. Dalam pengalaman saya, ini bukan rezim standar di mana sebagian besar sistem beroperasi.
John Neuhaus