Βρείτε και διορθώστε τις διαρροές μνήμης στα Windows 10

Το Memory Leak είναι μια εσφαλμένη τοποθέτηση πόρων σε ένα πρόγραμμα υπολογιστή λόγω ελαττωματικής κατανομής μνήμης. Συμβαίνει όταν μια θέση RAM που δεν χρησιμοποιείται παραμένει ελεύθερη. Μια διαρροή μνήμης δεν πρέπει να συγχέεται με μια διαρροή χώρου, η οποία αναφέρεται σε ένα πρόγραμμα που χρησιμοποιεί περισσότερη μνήμη RAM από ό, τι είναι απαραίτητο. Μια διαρροή μνήμης σε ένα σύστημα Windows 10/8/7 λέγεται ότι έλαβε χώρα όταν η μνήμη δεν είναι απλώς προσβάσιμη παρά το ότι δεν χρησιμοποιείται.

Διαρροές μνήμης στα Windows 10

Πριν ξεκινήσετε, θα πρέπει να γνωρίζετε ότι η διαρροή μνήμης είναι ένα ζήτημα λογισμικού για εντοπισμό σφαλμάτων - για παράδειγμα σε Java, JavaScript, C / C ++, Windows κ.λπ. Δεν απαιτείται φυσική αντικατάσταση RAM ή σκληρού δίσκου.

Διαρροή μνήμης στα Windows 10

Γιατί είναι κακό

Είναι προφανές ότι η διαρροή μνήμης είναι κακή επειδή είναι ένα σφάλμα, ένα ελάττωμα στο σύστημα. Αλλά ας μάθουμε πώς ακριβώς επηρεάζει το σύστημα:

  1. Δεδομένου ότι η μνήμη δεν απελευθερώνεται ακόμη και όταν δεν χρησιμοποιείται, έχει ως αποτέλεσμα την εξάντληση της μνήμης.
  2. Η εξάντληση της μνήμης έχει ως αποτέλεσμα τη γήρανση του λογισμικού.
  3. Η μειωμένη διαθέσιμη μνήμη οδηγεί σε αυξημένο χρόνο απόκρισης και κακή απόδοση από το σύστημα.
  4. Η μη ελεγχόμενη διαρροή μνήμης μπορεί τελικά να οδηγήσει σε διακοπή λειτουργίας μιας εφαρμογής.

Προκειμένου να εντοπιστεί διαρροή μνήμης, ο προγραμματιστής πρέπει να έχει πρόσβαση στον πηγαίο κώδικα του προγράμματος.

Εντοπισμός της διαρροής

Για να λύσουμε ένα πρόβλημα, πρέπει πρώτα να το εντοπίσουμε. Τα βασικά βήματα για τον εντοπισμό διαρροής μνήμης είναι:

  1. Επιβεβαίωση : Προσδιορισμός εάν έχει προκύψει διαρροή.
  2. Εύρεση διαρροής μνήμης λειτουργίας πυρήνα : Εντοπισμός διαρροής που προκαλείται από ένα στοιχείο προγράμματος οδήγησης λειτουργίας πυρήνα.
  3. Εύρεση διαρροής μνήμης λειτουργίας χρήστη : Εντοπισμός διαρροής που προκαλείται από πρόγραμμα οδήγησης ή εφαρμογή λειτουργίας χρήστη.

Κατανομή μνήμης

Υπάρχουν διαφορετικοί τρόποι με τους οποίους οι εφαρμογές διαθέτουν μνήμη RAM. Εάν ο χώρος δεν ελευθερωθεί μετά τη χρήση, η διαρροή μνήμης θα συμβεί ανεξάρτητα από τον τρόπο κατανομής. Μερικά κοινά μοτίβα κατανομής είναι:

  1. Λειτουργία HealAlloc για κατανομή μνήμης σωρού. Τα ισοδύναμα χρόνου εκτέλεσης C / C ++ είναι malloc και νέα.
  2. Λειτουργία VirtualAlloc για άμεση κατανομή από το λειτουργικό σύστημα.
  3. API του Kernel32 για τη διατήρηση της μνήμης του πυρήνα για την εφαρμογή. Παράδειγμα, CreateFile, CreateThread.
  4. API User32 και Gdi32 API.

Πρόληψη διαρροών μνήμης

Όλοι γνωρίζουμε ότι η πρόληψη είναι καλύτερη από τη θεραπεία, οπότε εδώ είναι μερικοί τρόποι για την αποφυγή διαρροής μνήμης.

Παρακολούθηση συνηθειών

Διαρροές μνήμης στα Windows 10

Πρέπει να προσέχετε για μη φυσιολογική χρήση RAM από μεμονωμένα προγράμματα και εφαρμογές. Μπορείτε να μεταβείτε στη Διαχείριση εργασιών των Windows πατώντας CTRL + SHIFT + ESC και προσθέστε τις στήλες όπως Λαβές, Αντικείμενα χρήστη, Αντικείμενα GDI κ.λπ.

Αυτό θα σας βοηθήσει να παρακολουθείτε εύκολα τη χρήση πόρων.

Εργαλεία της Microsoft για τη διάγνωση διαρροών μνήμης

Διάφορα εργαλεία για τη διάγνωση διαρροών μνήμης για διάφορους τρόπους κατανομής:

  1. Η εφαρμογή επαλήθευσης εντοπίζει διαρροές σωρού.
  2. Το UMDH (ένα στοιχείο των Εργαλείων εντοπισμού σφαλμάτων των Windows) εντοπίζει διαρροές για μεμονωμένες διαδικασίες παρακολουθώντας εκχωρήσεις σωρού μνήμης
  3. Trace Capture για λεπτομερή ανάλυση της χρήσης RAM.
  4. Το Xperf παρακολουθεί επίσης μοτίβα κατανομής σωρού.
  5. Το CRT Debug Heap όχι μόνο παρακολουθεί τις κατανομές σωρού, αλλά επίσης επιτρέπει στις πρακτικές κωδικοποίησης να ελαχιστοποιούν τις διαρροές.
  6. Το JavaScript Memory Leak Detector εντοπίζει τις διαρροές μνήμης σε κωδικούς.

Συμβουλές χρήσης

  1. Χρησιμοποιήστε τον πυρήνα HANDLE και άλλους έξυπνους δείκτες για πόρους Win32 και κατανομές σωρού.
  2. Λάβετε μαθήματα για αυτόματη διαχείριση πόρων για εκχωρήσεις πυρήνα από τη βιβλιοθήκη ATL. Το πρότυπο C ++ έχει auto_ptr για κατανομές σωρού.
  3. Συμπυκνώνουν COM interface δείκτες μέσα στο «έξυπνο δείκτες» με τη βοήθεια της _com_ptr_t ή _bstr_t ή _variant_t .
  4. Παρακολουθήστε τον κωδικό .NET για μη φυσιολογική χρήση μνήμης.
  5. Αποφύγετε πολλαπλές διαδρομές εξόδου για συναρτήσεις ώστε να επιτρέπεται η κατανομή εκχωρήσεων από μεταβλητές στα περισσότερα μπλοκ μέχρι το τέλος μιας συνάρτησης.
  6. Χρησιμοποιήστε εγγενείς εξαιρέσεις μόνο μετά την απελευθέρωση όλων των κατανομών στο μπλοκ _finally. Τυλίξτε όλες τις κατανομές σωρών και χειρισμών σε έξυπνους δείκτες για να χρησιμοποιήσετε εξαιρέσεις C ++.
  7. Πάντα να καλείτε τη συνάρτηση PropVariantClear πριν από την εκ νέου προετοιμασία ή την απόρριψη ενός ΠΡΟΒΟΛΗ αντικειμένου.

Αντιμετώπιση προβλημάτων διαρροών μνήμης στα Windows

Ακριβώς όπως και οι διάφοροι τρόποι για την πρόληψη διαρροών μνήμης, υπάρχουν διάφοροι τρόποι για να σταματήσετε τις διαρροές μνήμης. Αλλά πριν ξεκινήσετε, θυμηθείτε να δημιουργήσετε πρώτα ένα σημείο επαναφοράς συστήματος.

1] Κλείστε τις διαδικασίες και κάντε επανεκκίνηση.

Εάν δείτε ότι μια περιττή διαδικασία καταλαμβάνει υπερβολική μνήμη RAM, μπορείτε να τερματίσετε τη διαδικασία στη Διαχείριση εργασιών. Θα χρειαστεί να κάνετε επανεκκίνηση της συσκευής έτσι ώστε ο ελεύθερος χώρος να είναι διαθέσιμος για χρήση από άλλες διαδικασίες. Χωρίς επανεκκίνηση το πρόβλημα διαρροής μνήμης δεν θα λυθεί. Μια συγκεκριμένη διαδικασία που έχει σφάλματα για να επιβραδύνει τον υπολογιστή είναι το Runtime Broker. Δοκιμάστε αν η απενεργοποίηση μόνο λειτουργεί.

2] Διαγνωστικά εργαλεία μνήμης

Διαγνωστικά μνήμης των Windows

Για να αποκτήσετε πρόσβαση στο ενσωματωμένο εργαλείο διάγνωσης μνήμης για Windows:

  1. Αποθηκεύστε όλη τη σημαντική δουλειά σας.
  2. Πατήστε Win + R για να ανοίξετε το παράθυρο Εκτέλεση .
  3. Πληκτρολογήστε την εντολή mdsched.exe στο παράθυρο Εκτέλεση .
  4. Επανεκκινήστε τον υπολογιστή.
  5. Μετά από μια επανεκκίνηση, εκτελέστε μια βασική σάρωση ή πηγαίνετε για τις επιλογές "Για προχωρημένους ", όπως " Δοκιμή μίξης " ή " Αριθμός καταμέτρησης ".
  6. Πατήστε F10 για έναρξη της δοκιμής.

Αυτές εξακολουθούν να είναι προσωρινές διορθώσεις.

3] Ελέγξτε για ενημερώσεις προγράμματος οδήγησης

Ενημέρωση λογισμικού προγράμματος οδήγησης

Τα παλιά προγράμματα οδήγησης προκαλούν διαρροές μνήμης. Διατηρήστε όλα τα προγράμματα οδήγησης ενημερωμένα:

  1. Πατήστε Win + R και ανοίξτε το παράθυρο Εκτέλεση . Πληκτρολογήστε devmgmt.msc και πατήστε Enter. Θα σας μεταφέρει στη Διαχείριση συσκευών .
  2. Ελέγξτε για ξεπερασμένα προγράμματα οδήγησης και ενημερώστε τα όλα.
  3. Για ενημερώσεις που ίσως χάσατε, ελέγξτε το Windows Update.

Αυτό ήταν απλό.

4] Βελτιστοποιήστε την απόδοση

Προσαρμογή για καλύτερη απόδοση

Η προσαρμογή των Windows για απόδοση θα διαχειριστεί τα πάντα, συμπεριλαμβανομένου του προγραμματισμού του επεξεργαστή και της χρήσης μνήμης για να σταματήσει η διαρροή μνήμης. Ακολουθήστε αυτά τα βήματα:

  1. Κάντε δεξί κλικ στο " This PC " και επιλέξτε " Advanced " ρυθμίσεις στο αριστερό τμήμα του παραθύρου.
  2. Στην καρτέλα «Για προχωρημένους », μεταβείτε στην « Απόδοση » και στη συνέχεια « Ρυθμίσεις ».
  3. Επιλέξτε " Προσαρμογή για καλύτερη απόδοση " και κάντε κλικ στο OK .
  4. Επανεκκινήστε και ελέγξτε εάν το πρόβλημα έχει επιλυθεί.

Εάν αυτή η απλή λύση δεν λειτούργησε, δοκιμάστε την επόμενη λύση.

5] Απενεργοποίηση προγραμμάτων που εκτελούνται κατά την εκκίνηση

Προγράμματα εκκίνησης

Η απενεργοποίηση των ενοχλητικών προγραμμάτων είναι ο μόνος τρόπος για να απαλλαγείτε από το πρόβλημα διαρροής μνήμης. Μεταβείτε στη Διαχείριση εργασιών και απενεργοποιήστε το πρόγραμμα προβληματισμού. Εάν δεν γνωρίζετε ποια προγράμματα δημιουργούν το πρόβλημα, κάντε το:

  1. Μεταβείτε στο " Task Manager ".
  2. Μεταβείτε στην « Εκκίνηση ».
  3. Απενεργοποιήστε τα προγράμματα εκκίνησης που δεν χρειάζεται να εκτελέσετε από προεπιλογή.

6] Defrag Hard Drive

Ανασυγκρότηση δίσκων

Παρόλο που τα Windows 10 το κάνουν αυτό για εσάς αυτόματα, ίσως χρειαστεί να κάνετε ανασυγκρότηση των σκληρών δίσκων περιστασιακά για να βελτιστοποιήσετε την απόδοση:

  1. Μεταβείτε στο " Αυτός ο υπολογιστής " ή " Ο υπολογιστής μου ".
  2. Κάντε δεξί κλικ στον σκληρό δίσκο του συστήματος (συνήθως C: drive).
  3. Μεταβείτε στα « Εργαλεία » στην ενότητα « Ιδιότητες » και επιλέξτε « Βελτιστοποίηση ».
  4. Επιλέξτε τη μονάδα για ανασυγκρότηση και επιλέξτε « Ανάλυση ».

Επανεκκινήστε τον υπολογιστή σας μετά το νέο κατακερματισμό.

7] ClearPage File κατά το κλείσιμο

Γίνεται πολύπλοκο τώρα - αλλά μην ανησυχείτε. Δείτε πώς μπορείτε να διαγράψετε το αρχείο σελίδας σε κάθε κλείσιμο:

  • Πληκτρολογήστε regedit στην Αναζήτηση για να ξεκινήσετε τον Επεξεργαστή Μητρώου.
  • Εισαγάγετε αυτήν τη διαδρομή:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager Διαχείριση μνήμης
  • Αλλάξτε την τιμή του ClearPageFileAtShutDown σε «1».
  • Αποθηκεύστε τις αλλαγές και επανεκκινήστε τη συσκευή.

Αυτό πρέπει να το κάνει. Θυμηθείτε ότι η διαδικασία τερματισμού θα διαρκέσει λίγο περισσότερο χρόνο.

9] Απενεργοποίηση Superfetch

Αυτή η υπηρεσία Windows βελτιστοποιεί την απόδοση ελαχιστοποιώντας το χρόνο εκκίνησης. Επιτρέπει στα Windows τη διαχείριση της χρήσης RAM. Η ζωή μετά την απενεργοποίηση του Superfetch δεν είναι βολική, αλλά κάντε το αν πρέπει. Τουλάχιστον δοκιμάστε αυτό μόνο για να απομονώσετε το πρόβλημα:

  1. Αναζητήστε το services.msc και μεταβείτε στη Διαχείριση υπηρεσιών
  2. Αναζητήστε το " Superfetch " και κάντε δεξί κλικ για να μεταβείτε στο " Properties ".
  3. Επιλέξτε « Διακοπή ».
  4. Επίσης, " Απενεργοποίηση " της υπηρεσίας από το αναπτυσσόμενο μενού.
  5. Επανεκκινήστε τον υπολογιστή και ελέγξτε αν η απόδοση έχει βελτιωθεί.

Ενεργοποιήστε το Superfetch εάν αυτό δεν λειτούργησε.

10] Ελέγξτε για κακόβουλο λογισμικό

Χρησιμοποιήστε ένα λογισμικό προστασίας από ιούς τρίτου μέρους ή το Windows Defender των Windows 10 για να σαρώσετε και να εξαλείψετε κακόβουλο λογισμικό. Βεβαιωθείτε ότι το antivirus έχει ενημερωθεί για να υποστηρίζει το λειτουργικό σας σύστημα, έτσι ώστε να μην καταλήξει να είναι ο λόγος της διαρροής μνήμης.

Κάθε λύση που ίσως χρειαστεί να βρείτε ή να αποτρέψετε διαρροές μνήμης είναι εδώ. Μπορείτε να διαβάσετε περισσότερα σχετικά με τις διαρροές μνήμης σε MSDN και Microsoft.

Original text


Διαρροές μνήμης στα Windows 10