Bagaimana menemukan sumber kebocoran memori di Windows 7?


10

Saya memiliki mesin Windows 7 yang terus kehabisan RAM. Saya dapat melihat RAM gratis turun selama beberapa jam sampai titik mesin menjadi tidak responsif. Saya telah memeriksa daftar proses dan tidak satupun dari mereka yang mengambil RAM sebanyak itu.

Saya juga telah memeriksa jumlah pegangan per proses dan berbagai indikator lainnya tetapi masih tidak dapat menemukan mengapa mesin kehabisan RAM.

Apakah ada cara yang baik untuk memeriksa bagaimana memori digunakan di Windows?

Edit

Ini adalah hasil tasklistbeberapa menit sebelum mesin menjadi tidak responsif:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0         24 K
System                           4 Services                   0        300 K
smss.exe                       196 Services                   0      1,024 K
csrss.exe                      272 Services                   0      4,336 K
wininit.exe                    320 Services                   0      4,184 K
csrss.exe                      332 Console                    1      3,516 K
winlogon.exe                   372 Console                    1      6,316 K
services.exe                   416 Services                   0      8,112 K
lsass.exe                      432 Services                   0     10,088 K
lsm.exe                        440 Services                   0      3,664 K
svchost.exe                    548 Services                   0      8,152 K
svchost.exe                    620 Services                   0      6,564 K
svchost.exe                    660 Services                   0     15,764 K
LogonUI.exe                    724 Console                    1     18,428 K
svchost.exe                    768 Services                   0      7,992 K
svchost.exe                    828 Services                   0      9,724 K
svchost.exe                    852 Services                   0     28,092 K
svchost.exe                    176 Services                   0     13,096 K
spoolsv.exe                    824 Services                   0     10,608 K
svchost.exe                    952 Services                   0     11,632 K
svchost.exe                   1076 Services                   0      8,524 K
fshoster32.exe                1120 Services                   0      9,148 K
fsorsp.exe                    1200 Services                   0      8,036 K
fsgk32.exe                    1324 Services                   0      3,084 K
cygrunsrv.exe                 1552 Services                   0      5,852 K
conhost.exe                   1864 Services                   0      2,996 K
sshd.exe                      1896 Services                   0      7,804 K
FSMA32.EXE                    2024 Services                   0      1,628 K
svchost.exe                   1320 Services                   0      5,092 K
fssm32.exe                    1704 Services                   0      2,196 K
FSHDLL64.EXE                  2120 Services                   0        644 K
SearchIndexer.exe             3260 Services                   0     13,596 K
sshd.exe                    138920 Services                   0      8,696 K
sshd.exe                    138448 Services                   0      8,696 K
sshd.exe                    138660 Services                   0      8,696 K
bash.exe                    137924 Services                   0      5,380 K
bash.exe                    137820 Services                   0      3,832 K
SAV32CLI.EXE                136344 Services                   0    133,868 K
WmiPrvSE.exe                139444 Services                   0      7,168 K
sshd.exe                    139672 Services                   0      8,692 K
sshd.exe                    139876 Services                   0      8,684 K
bash.exe                    139992 Services                   0      5,432 K
bash.exe                    140040 Services                   0      3,996 K
bash.exe                    140200 Services                   0      5,400 K
bash.exe                    139424 Services                   0      4,048 K
typeperf.exe                139300 Services                   0      5,372 K
sleep.exe                   138268 Services                   0      2,272 K
sshd.exe                    139612 Services                   0      7,168 K
sshd.exe                    137720 Services                   0      5,700 K
bash.exe                    139524 Services                   0      5,304 K
bash.exe                    138952 Services                   0      3,756 K
tasklist.exe                137580 Services                   0      5,164 K
bash.exe                    139460 Services                   0      5,452 K
bash.exe                    139796 Services                   0        104 K

Pada titik itu, wmic OS get FreePhysicalMemory /Valuemelaporkan sekitar 400 MB memori bebas dari 2GB.

RamMap:

masukkan deskripsi gambar di sini

Pengelola tugas:

masukkan deskripsi gambar di sini


1
Bisakah Anda me-restart komputer Anda dan memposting tangkapan layar dari proses Task Manager Anda? Dan pastikan untuk menampilkan proses dari semua pengguna. Jika Anda memiliki lebih dari 50-60 setelah reboot maka pasti ada hal-hal yang dapat Anda lakukan tetapi jika tidak ada yang terlihat mencurigakan maka semuanya bisa menjadi rumit ..
MonkeyZeus

1
Apakah Anda kehabisan memori virtual atau memori fisik. Solusi dan penyebabnya berbeda. Peringatan memori virtual yang rendah adalah masalah konfigurasi, karena kehabisan memori fisik, berarti Anda harus menjalankan banyak proses.
Ramhound

1
Apakah Anda memiliki bukti bahwa penyebabnya adalah kebocoran memori? Sepertinya Anda memiliki bukti yang baik bahwa itu bukan kebocoran memori. (Meskipun itu bisa jadi pengemudi yang rusak, saya kira.)
David Schwartz

Terima kasih untuk umpan baliknya. Saya telah menambahkan beberapa info lagi ke posting, khususnya daftar tugas. Ini adalah memori fisik gratis yang terus turun seiring waktu. Apakah mungkin untuk memeriksa bagaimana ini digunakan?
laurent

Jawaban:


8

Usgae memori tinggi berasal dari penggunaan tabel Page yang tinggi . Untuk melihat proses mana yang menggunakannya, instal Windows Performance Toolkit , buka prompt perintah sebagai admin dan jalankan perintah ini:

xperf -on ReferenceSet -BufferSize 1024 -MaxFile 512 -FileMode Circular  && timeout 5 && xperf -d MemUsage.etl

Buka MemUsage.etldengan Windows Performance Analyzer (WPA.exe), seret dan lepas grafik "ResidentSet" dari daftar grafik kiri ke panel analisis:

masukkan deskripsi gambar di sini

Sekarang pindahkan kolom "Halaman Kategori" ke sisi kiri dan perluas entri "Halaman Tabel":

masukkan deskripsi gambar di sini

Di sini Anda melihat proses yang memiliki penggunaan pagetable tinggi. Di situs yang tepat (setelah garis biru), Anda melihat penggunaan memori tabel halaman dalam MB untuk setiap proses.


di windows8.1 saya tidak melihat 'residen' sebagai opsi grafik yang tersedia. bagaimana saya mendapatkannya? xperf-flag yang berbeda?
akira

saya menjawab komentar saya sendiri: perbarui xperf.
akira

Ini tidak berfungsi untuk saya di Windows 7 - panggilan pertama ke xperf memberixperf: error: NT Kernel Logger: Invalid flags. (0x3ec).
benshepherd

@ Benshepherd bagi saya itu berhasil. Pastikan Anda menggunakan WPT terbaru dari 8.1 SDK: dropbox.com/s/e5ol59a6n9g3ctb/Win7_xperf.png
magicandre1981

1
Saya akhirnya menemukan masalah, itu adalah Lenovo "RapidBoot Shield" dan menghapusnya memecahkan masalah saya: superuser.com/a/850346/79763
sparrowt

0

satu-satunya hal "aneh" yang bisa saya lihat di sini adalah ini:

  • Anda memiliki proses yang disebut scan.exebabi mana 98% cpu sekarang
  • Anda memiliki proses yang disebut fssm32.exeyang memiliki 9 juta kesalahan halaman. fssm32.exeterlihat seperti program dari pemindai virus f-secure.
  • Anda juga memiliki proses yang disebut SAV32CLI.EXEyang menghabiskan lebih dari 130mb + memori. sepertinya Anda merasa lebih terlindungi untuk menjalankan 2 pemindai virus: f-secure dan sophos pada saat bersamaan.

rammap-screenshot terlihat ok untuk saya: Anda memiliki kumpulan ~ 400MB file yang di-cache, 85mb di antaranya digunakan aktif, 300mb + dalam mode siaga (artinya mereka dibebaskan segera setelah Anda membutuhkan lebih banyak ram). melihat jumlah Anda dari proses sshd.exe dan bash.exe ini terlihat sah juga.

cara terbaik untuk mempelajari cara kerja dalam cara windows mengelola memori adalah pembicaraan di sini: http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/WCL405 .. Anda sudah menggunakan beberapa alat yang dikembangkan oleh pembicara .


1
kontak Microsoft saya (Microsoft Premier Field Engineers) juga memberi tahu saya bahwa beberapa tabel halaman 100MB tidak normal untuk Windows.
magicandre1981
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.