Cari dan perbaiki Kebocoran Memori di Windows 10

A Memory Leak adalah salah letak sumber dalam program komputer disebabkan peruntukan memori yang rosak. Ia berlaku apabila lokasi RAM yang tidak digunakan masih belum dikeluarkan. Kebocoran memori tidak boleh dikelirukan dengan kebocoran ruang, yang merujuk kepada program yang menggunakan lebih banyak RAM daripada yang diperlukan. Kebocoran memori pada sistem Windows 10/8/7 dikatakan berlaku ketika memori tidak dapat diakses walaupun tidak digunakan.

Kebocoran Memori di Windows 10

Sebelum anda memulakan, anda harus tahu bahawa kebocoran memori adalah masalah perisian untuk disahpijat - misalnya di Java, JavaScript, C / C ++, Windows, dll. Tidak perlu mengganti RAM atau cakera keras secara fizikal.

Kebocoran Memori di Windows 10

Kenapa teruk

Jelas sekali kebocoran memori adalah buruk kerana ia adalah bug, kelemahan dalam sistem. Tetapi mari kita ketahui bagaimana sebenarnya ia mempengaruhi sistem:

  1. Oleh kerana ingatan tidak dibebaskan walaupun tidak digunakan, memori akan habis.
  2. Kehabisan memori mengakibatkan penuaan perisian.
  3. Memori yang tersedia berkurang menyebabkan peningkatan masa tindak balas dan prestasi yang buruk oleh sistem.
  4. Kebocoran memori yang tidak dikawal akhirnya boleh menyebabkan kerosakan aplikasi.

Untuk mengenal pasti kebocoran memori, pengaturcara perlu mempunyai akses ke kod sumber program.

Mengesan kebocoran

Untuk menyelesaikan masalah, kita perlu mengenalinya terlebih dahulu. Langkah asas untuk mengesan kebocoran memori adalah:

  1. Peneguhan : Menentukan sama ada berlaku kebocoran.
  2. Mencari kebocoran memori mod Kernel : Mencari kebocoran yang disebabkan oleh komponen pemacu mod kernel.
  3. Mencari kebocoran memori mod pengguna : Mencari kebocoran yang disebabkan oleh pemacu mod pengguna atau aplikasi.

Peruntukan memori

Terdapat pelbagai mod di mana aplikasi memperuntukkan RAM. Sekiranya ruang tidak dibebaskan setelah digunakan, kebocoran memori akan berlaku tanpa mengira mod peruntukan. Beberapa corak peruntukan biasa adalah:

  1. Fungsi HealAlloc untuk peruntukan memori timbunan. Setara jangka masa C / C ++ adalah malloc dan baru.
  2. Fungsi VirtualAlloc untuk peruntukan langsung dari OS.
  3. API Kernel32 untuk menyimpan memori kernel untuk aplikasi. Contoh, CreateFile, CreateThread.
  4. API User32 dan Gdi32 API.

Mencegah kebocoran memori

Kita semua tahu pencegahan lebih baik daripada menyembuhkan jadi berikut adalah beberapa cara untuk mengelakkan kebocoran memori.

Tabiat pemantauan

Kebocoran Memori di Windows 10

Anda perlu mengawasi penggunaan RAM yang tidak normal oleh setiap program dan aplikasi. Anda boleh pergi ke Windows Task Manager dengan menekan CTRL + SHIFT + ESC dan menambahkan lajur seperti Pemegang, Objek Pengguna, Objek GDI, dll.

Ini akan membantu anda memantau penggunaan sumber dengan mudah.

Alat Microsoft untuk mendiagnosis kebocoran memori

Pelbagai alat mendiagnosis kebocoran memori untuk pelbagai mod peruntukan:

  1. Pengesah Aplikasi mendiagnosis kebocoran timbunan.
  2. UMDH (komponen Windows Debugging Tools) mendiagnosis kebocoran untuk proses individu dengan memantau peruntukan memori timbunan.
  3. Trace Capture untuk analisis penggunaan RAM secara menyeluruh.
  4. Xperf juga mengesan corak peruntukan timbunan.
  5. CRT Debug Heap tidak hanya menjejaki peruntukan timbunan tetapi juga memungkinkan amalan pengekodan untuk mengurangkan kebocoran.
  6. JavaScript Memory Leak Detector menebus kebocoran memori dalam kod.

Petua Penggunaan

  1. Gunakan kernel HANDLE dan penunjuk pintar lain untuk sumber Win32 dan peruntukan timbunan.
  2. Dapatkan kelas untuk pengurusan sumber automatik untuk peruntukan kernel dari perpustakaan ATL. Piawaian C ++ mempunyai auto_ptr untuk peruntukan timbunan.
  3. Merangkum penunjuk antara muka COM dalam "penunjuk pintar" dengan bantuan _com_ptr_t atau _bstr_t atau _variant_t .
  4. Pantau kod .NET untuk penggunaan memori yang tidak normal.
  5. Elakkan beberapa jalan keluar fungsi untuk membiarkan peruntukan dibebaskan dari pemboleh ubah di kebanyakan blok pada akhir fungsi.
  6. Gunakan pengecualian asli hanya setelah membebaskan semua peruntukan di blok _finally. Balut semua timbunan dan atur peruntukan ke dalam penunjuk pintar untuk menggunakan pengecualian C ++.
  7. Sentiasa memanggil fungsi PropVariantClear sebelum memulakan semula atau membuang objek PROPVARIAN.

Menyelesaikan masalah kebocoran memori di Windows

Sama seperti pelbagai cara untuk mencegah kebocoran memori, terdapat pelbagai cara untuk menghentikan kebocoran memori. Tetapi sebelum anda memulakan, ingatlah untuk membuat titik pemulihan sistem terlebih dahulu.

1] Tutup proses dan mulakan semula.

Sekiranya anda melihat proses yang tidak perlu menggunakan terlalu banyak RAM, anda boleh mengakhiri proses tersebut di Task Manager. Anda perlu menghidupkan semula peranti supaya ruang yang dibebaskan tersedia untuk digunakan oleh proses lain. Tanpa Memulakan semula masalah kebocoran memori tidak akan dapat diselesaikan. Salah satu proses tertentu yang mempunyai bug untuk melambatkan PC adalah Runtime Broker. Cuba jika mematikannya berfungsi sahaja.

2] Alat Diagnostik Memori

Diagnostik Memori Windows

Untuk mengakses Alat Diagnostik Memori terbina dalam untuk Windows:

  1. Simpan semua kerja penting anda.
  2. Tekan Win + R untuk membuka tetingkap Run .
  3. Ketik perintah mdsched.exe di tetingkap Jalankan .
  4. Mulakan semula PC.
  5. Selepas memulakan semula, lakukan imbasan asas atau cari pilihan ' Lanjutan ' seperti ' Campuran ujian ' atau ' Kiraan lulus '.
  6. Tekan F10 untuk memulakan ujian.

Ini masih merupakan penyelesaian sementara.

3] Periksa kemas kini Pemacu

Kemas kini Perisian Pemacu

Pemacu ketinggalan zaman menyebabkan kebocoran memori. Pastikan semua pemandu dikemas kini:

  1. Tekan Win + R dan buka tetingkap Run . Taip devmgmt.msc dan tekan Enter. Ini akan membawa anda ke Pengurus Peranti .
  2. Periksa pemandu yang sudah lapuk dan kemas kini semuanya.
  3. Untuk kemas kini yang mungkin anda terlepas, periksa Windows Update.

Ini mudah.

4] Mengoptimumkan prestasi

Sesuaikan untuk prestasi terbaik

Menyelaraskan Windows untuk prestasi akan menguruskan segala-galanya termasuk penjadualan pemproses dan penggunaan memori untuk menghentikan kebocoran memori. Ikut langkah-langkah ini:

  1. Klik kanan pada ' PC ini ' dan pilih tetapan ' Advanced ' di panel kiri.
  2. Di bawah tab ' Advanced ', pergi ke ' Performance ', diikuti dengan ' Settings '.
  3. Tandakan ' Laraskan prestasi terbaik ' dan klik OK .
  4. Mulakan semula dan periksa sama ada masalah itu diselesaikan.

Sekiranya penyelesaian mudah ini tidak berjaya, cubalah penyelesaian seterusnya.

5] Lumpuhkan Program yang dijalankan pada Permulaan

Program permulaan

Melumpuhkan program yang menyusahkan adalah satu-satunya cara untuk menghilangkan masalah kebocoran memori. Pergi ke Task Manager dan lumpuhkan program membuat masalah. Sekiranya anda tidak tahu program mana yang menimbulkan masalah, lakukan ini:

  1. Pergi ke ' Task Manager '.
  2. Pergi ke ' Permulaan '.
  3. Lumpuhkan program permulaan yang tidak perlu anda jalankan secara lalai.

6] Pemacu Keras Defrag

Defragmentasi Cakera

Walaupun Windows 10 melakukan ini untuk anda secara automatik, anda mungkin perlu melakukan defrag pada cakera keras sekali-sekala untuk mengoptimumkan prestasi:

  1. Pergi ke ' PC ini ' atau ' My Computer '.
  2. Klik kanan pemacu keras sistem (biasanya pemacu C:).
  3. Pergi ke ' Tools ' di bawah ' Properties ' dan pilih ' Optimize '.
  4. Pilih pemacu untuk defrag dan pilih ' Analisis '.

Mulakan semula komputer anda selepas pemecahan baru.

7] Fail ClearPage semasa ditutup

Sekarang semakin rumit - tetapi jangan risau. Inilah cara membersihkan Fail Halaman pada setiap penutupan:

  • Ketik regedit di Search untuk melancarkan Registry Editor.
  • Masukkan jalan ini:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  • Tukar nilai ClearPageFileAtShutDown kepada '1'.
  • Simpan perubahan dan Mulakan semula peranti.

Ini mesti melakukannya. Ingat bahawa proses penutupan anda memerlukan sedikit masa lagi.

9] Lumpuhkan Superfetch

Perkhidmatan Windows ini mengoptimumkan prestasi dengan meminimumkan masa boot. Ia membolehkan Windows menguruskan penggunaan RAM. Kehidupan selepas melumpuhkan Superfetch tidak mudah tetapi lakukanlah jika anda mesti. Sekurang-kurangnya cubalah ini sahaja untuk mengasingkan masalah:

  1. Cari perkhidmatan.msc dan pergi ke Pengurus Perkhidmatan.
  2. Cari ' Superfetch ' dan klik kanan untuk pergi ke ' Properties '.
  3. Pilih ' Berhenti '.
  4. Juga ' Lumpuhkan ' perkhidmatan dari menu lungsur.
  5. Mulakan semula PC dan periksa apakah prestasinya bertambah baik.

Dayakan Superfetch jika ini tidak berfungsi.

10] Periksa perisian hasad

Gunakan perisian antivirus pihak ketiga atau Windows Defender dalaman 10 untuk mengimbas dan menghilangkan perisian hasad. Pastikan antivirus dikemas kini untuk menyokong OS anda agar tidak menjadi alasan kebocoran memori.

Setiap penyelesaian yang mungkin anda perlukan untuk mencari atau mencegah kebocoran memori ada di sini. Anda boleh membaca lebih lanjut mengenai kebocoran memori di MSDN dan Microsoft.

Original text


Kebocoran Memori di Windows 10