Εύρεση και διόρθωση διαρροών μνήμης στα Windows 11/10
Η διαρροή μνήμης(Memory Leak) είναι μια εσφαλμένη τοποθέτηση πόρων σε ένα πρόγραμμα υπολογιστή λόγω εσφαλμένης κατανομής μνήμης. Συμβαίνει όταν μια θέση RAM που δεν χρησιμοποιείται παραμένει ακυκλοφόρητη. Μια διαρροή μνήμης δεν πρέπει να συγχέεται με μια διαρροή χώρου, η οποία αναφέρεται σε ένα πρόγραμμα που χρησιμοποιεί περισσότερη μνήμη RAM(RAM) από την απαραίτητη. Μια διαρροή μνήμης σε ένα σύστημα Windows 11/10/8/7 λέγεται ότι έλαβε χώρα όταν η μνήμη απλώς δεν είναι προσβάσιμη παρόλο που δεν χρησιμοποιείται.
Διαρροές μνήμης στα Windows 11/10
Πριν ξεκινήσετε, θα πρέπει να γνωρίζετε ότι μια διαρροή μνήμης(Memory) είναι ένα πρόβλημα λογισμικού για εντοπισμό σφαλμάτων – για παράδειγμα σε Java , JavaScript , C/C++, Windows κ.λπ. Η φυσική αντικατάσταση της μνήμης RAM(RAM) ή του σκληρού δίσκου δεν απαιτείται.
Γιατί είναι κακό
Είναι προφανές ότι μια διαρροή μνήμης είναι κακή επειδή είναι ένα σφάλμα, ένα ελάττωμα στο σύστημα. Αλλά ας μάθουμε πώς ακριβώς επηρεάζει το σύστημα:
- Δεδομένου ότι η μνήμη δεν ελευθερώνεται ακόμη και όταν δεν χρησιμοποιείται, έχει ως αποτέλεσμα την εξάντληση της μνήμης.
- Η εξάντληση της μνήμης έχει ως αποτέλεσμα τη γήρανση του λογισμικού.
- Η μειωμένη διαθέσιμη μνήμη οδηγεί σε αυξημένο χρόνο απόκρισης και κακή απόδοση του συστήματος.
- Μια μη ελεγμένη διαρροή μνήμης μπορεί τελικά να οδηγήσει σε κατάρρευση μιας εφαρμογής.
Για να εντοπίσει μια διαρροή μνήμης, ένας προγραμματιστής πρέπει να έχει πρόσβαση στον πηγαίο κώδικα του προγράμματος.
Εντοπισμός της διαρροής
Για να λύσουμε ένα πρόβλημα, πρέπει πρώτα να το εντοπίσουμε. Τα βασικά βήματα για τον εντοπισμό μιας διαρροής μνήμης είναι:
- Επιβεβαίωση(Affirmation) : Προσδιορισμός εάν έχει σημειωθεί διαρροή.
- Εύρεση διαρροής μνήμης σε λειτουργία πυρήνα(Finding Kernel-mode memory leak) : Εντοπισμός διαρροής που προκαλείται από στοιχείο προγράμματος οδήγησης λειτουργίας πυρήνα.
- Εύρεση διαρροής μνήμης σε λειτουργία χρήστη(Finding User-mode memory leak) : Εντοπισμός διαρροής που προκαλείται από πρόγραμμα οδήγησης ή εφαρμογή σε λειτουργία χρήστη.
Εκχώρηση μνήμης
Υπάρχουν διαφορετικοί τρόποι λειτουργίας στους οποίους οι εφαρμογές εκχωρούν τη μνήμη RAM(RAM) . Εάν δεν ελευθερωθεί χώρος μετά τη χρήση, η διαρροή μνήμης θα συμβεί ανεξάρτητα από τον τρόπο εκχώρησης. Μερικά κοινά πρότυπα κατανομής είναι:
- Λειτουργία HealAlloc(HealAlloc) για εκχώρηση μνήμης σωρού. Τα ισοδύναμα χρόνου εκτέλεσης C/C++ είναι malloc και νέα.
- Λειτουργία VirtualAlloc(VirtualAlloc) για άμεση κατανομή από το λειτουργικό σύστημα.
- Kernel32 API(Kernel32 APIs) για τη διατήρηση της μνήμης του πυρήνα για την εφαρμογή. Παράδειγμα(Example) , CreateFile , CreateThread .
- User32 API και Gdi32 API.
Αποτρέψτε τις διαρροές μνήμης στα Windows
Όλοι γνωρίζουμε ότι η πρόληψη είναι καλύτερη από τη θεραπεία, επομένως εδώ είναι μερικοί τρόποι για να αποτρέψετε μια διαρροή μνήμης.
Συνήθειες παρακολούθησης
Πρέπει να προσέχετε για μη φυσιολογική χρήση RAM από μεμονωμένα προγράμματα και εφαρμογές. Μπορείτε να μεταβείτε στη Διαχείριση εργασιών των Windows(Windows Task Manager) πατώντας CTRL+SHIFT+ESC και να προσθέσετε τις στήλες όπως Λαβές(Handles) , Αντικείμενα χρήστη(User Objects) , Αντικείμενα GDI(GDI Objects) κ.λπ.
Αυτό θα σας βοηθήσει να παρακολουθείτε εύκολα τη χρήση των πόρων.
Διαβάστε(Read) : Ποιοι είναι οι τύποι μνήμης σε έναν υπολογιστή;(What are the Types of Memory in a computer?)
Εργαλεία της Microsoft(Microsoft) για τη διάγνωση διαρροών μνήμης
Διάφορα εργαλεία διαγιγνώσκουν διαρροές μνήμης για διάφορες λειτουργίες κατανομής:
- Ο Επαληθευτής Εφαρμογών(Application Verifier) διαγιγνώσκει διαρροές σωρού.
- Το UMDH(UMDH) (συστατικό των Εργαλείων εντοπισμού σφαλμάτων των Windows(Windows Debugging Tools) ) διαγιγνώσκει διαρροές για μεμονωμένες διαδικασίες παρακολουθώντας τις εκχωρήσεις μνήμης σωρού.
- Trace Capture για ενδελεχή ανάλυση της χρήσης RAM .
- Το Xperf παρακολουθεί επίσης μοτίβα κατανομής σωρού.
- Το CRT Debug Heap(CRT Debug Heap) όχι μόνο παρακολουθεί τις εκχωρήσεις σωρού αλλά επιτρέπει επίσης πρακτικές κωδικοποίησης για την ελαχιστοποίηση των διαρροών.
- Ο ανιχνευτής διαρροής μνήμης JavaScript(JavaScript Memory Leak Detector) διορθώνει τις διαρροές μνήμης σε κωδικούς.
Συμβουλές χρήσης
- Χρησιμοποιήστε kernel HANDLE s και άλλους έξυπνους δείκτες για πόρους Win32 και εκχωρήσεις σωρού.
- Λάβετε(Get) μαθήματα για αυτόματη διαχείριση πόρων για εκχωρήσεις πυρήνα από τη βιβλιοθήκη ATL . Το πρότυπο C++ έχει auto_ptr για εκχωρήσεις σωρού.
- Ενσωματώστε δείκτες διασύνδεσης COM(Encapsulate COM) σε "έξυπνους δείκτες" με τη βοήθεια των _com_ptr_t ή _bstr_t ή _variant_t .
- Παρακολουθήστε(Monitor) τον κώδικα .NET για μη φυσιολογική χρήση μνήμης.
- Αποφύγετε(Avoid) πολλαπλές διαδρομές εξόδου για συναρτήσεις για να αφήσετε τις εκχωρήσεις να απαλλαγούν από μεταβλητές στα περισσότερα μπλοκ μέχρι το τέλος μιας συνάρτησης.
- Χρησιμοποιήστε(Use) εγγενείς εξαιρέσεις μόνο αφού ελευθερώσετε όλες τις εκχωρήσεις στο μπλοκ _τελικά(_finally) . Τυλίξτε(Wrap) όλες τις εκχωρήσεις σωρού και χειρισμού σε έξυπνους δείκτες για να χρησιμοποιήσετε εξαιρέσεις C++.
- Να καλείτε πάντα τη συνάρτηση PropVariantClear πριν αρχικοποιήσετε ξανά ή απορρίψετε ένα αντικείμενο PROPVARIANT .
Αντιμετώπιση προβλημάτων(Troubleshoot) διαρροής μνήμης στα Windows
Ακριβώς όπως οι διάφοροι τρόποι αποτροπής διαρροών μνήμης, υπάρχουν διάφοροι τρόποι για να σταματήσετε τις διαρροές μνήμης. Αλλά πριν ξεκινήσετε, θυμηθείτε να δημιουργήσετε πρώτα ένα σημείο επαναφοράς συστήματος .
1] Κλείσιμο διεργασιών και επανεκκίνηση.
Εάν δείτε ότι μια περιττή διεργασία καταλαμβάνει πολύ μεγάλη μνήμη RAM(RAM) , μπορείτε να τερματίσετε τη διαδικασία στη Διαχείριση εργασιών(Task Manager) . Θα χρειαστεί να επανεκκινήσετε τη συσκευή έτσι ώστε ο ελεύθερος χώρος να είναι διαθέσιμος για χρήση από άλλες διεργασίες. Χωρίς επανεκκίνηση(Restart) το πρόβλημα διαρροής μνήμης δεν θα λυθεί. Μια συγκεκριμένη διαδικασία που έχει σφάλματα για να επιβραδύνει τον υπολογιστή είναι το Runtime Broker . Δοκιμάστε αν η απενεργοποίηση και μόνο λειτουργεί.
2] Διαγνωστικά εργαλεία μνήμης
Για πρόσβαση στο ενσωματωμένο Εργαλείο διάγνωσης μνήμης(Memory Diagnostic Tool) για Windows:
- Αποθηκεύστε όλες τις σημαντικές εργασίες σας.
- Πατήστε Win + R για να ανοίξετε το παράθυρο Εκτέλεση .(Run)
- Πληκτρολογήστε την εντολή mdsched.exe στο παράθυρο Εκτέλεση .(Run)
- Κάντε επανεκκίνηση του υπολογιστή.
- Μετά από επανεκκίνηση, εκτελέστε μια βασική σάρωση ή χρησιμοποιήστε τις επιλογές « Σύνθετες(Advanced) » όπως « Δοκιμαστική μίξη(Test mix) » ή « Αριθμός επιτυχιών(Pass count) ».
- Πατήστε F10 για να ξεκινήσει η δοκιμή.
Αυτές είναι ακόμα προσωρινές διορθώσεις.
3] Ελέγξτε για ενημερώσεις προγράμματος οδήγησης
Τα παλιά προγράμματα οδήγησης προκαλούν διαρροές μνήμης. Διατηρήστε όλα τα προγράμματα οδήγησης ενημερωμένα :
- Πατήστε Win + R και ανοίξτε το παράθυρο Εκτέλεση . (Run)Πληκτρολογήστε devmgmt.msc και πατήστε Enter . Θα σας μεταφέρει στη Διαχείριση Συσκευών(Device Manager) .
- Ελέγξτε(Check) για παλιά προγράμματα οδήγησης και ενημερώστε τα όλα.
- Για ενημερώσεις, που μπορεί να χάσατε, ελέγξτε το Windows Update .
Αυτό ήταν απλό.
4] Βελτιστοποιήστε την απόδοση
Η προσαρμογή των Windows για απόδοση θα διαχειριστεί τα πάντα, συμπεριλαμβανομένου του προγραμματισμού του επεξεργαστή και της χρήσης της μνήμης για να σταματήσει τις διαρροές μνήμης. Ακολουθήστε αυτά τα βήματα:
- Κάντε δεξί κλικ στο ' This PC ' και επιλέξτε ' Advanced ' settings στο αριστερό παράθυρο.
- Στην καρτέλα " Για προχωρημένους(Advanced) ", μεταβείτε στην επιλογή " Απόδοση(Performance) ", ακολουθούμενη από " Ρυθμίσεις(Settings) ".
- Επιλέξτε « Προσαρμογή για βέλτιστη απόδοση(Adjust for best performance) » και κάντε κλικ στο OK(OK) .
- Κάντε επανεκκίνηση(Restart) και ελέγξτε εάν το πρόβλημα έχει λυθεί.
Εάν αυτή η απλή λύση δεν λειτούργησε, δοκιμάστε την επόμενη λύση.
5] Απενεργοποιήστε τα προγράμματα(Programs) που εκτελούνται κατά την εκκίνηση(Startup)
Η απενεργοποίηση των ενοχλητικών προγραμμάτων είναι ο μόνος τρόπος για να απαλλαγείτε από το πρόβλημα διαρροής μνήμης. Μεταβείτε στη Διαχείριση εργασιών(Task Manager) και απενεργοποιήστε το πρόγραμμα αντιμετώπισης προβλημάτων. Εάν δεν γνωρίζετε ποια προγράμματα δημιουργούν το πρόβλημα, κάντε το εξής:
- Μεταβείτε στη « Διαχείριση εργασιών(Task Manager) ».
- Μεταβείτε στην " Εκκίνηση(Startup) ".
- Απενεργοποιήστε τα προγράμματα εκκίνησης(Disable the startup programs) που δεν χρειάζεται να εκτελείτε από προεπιλογή.
6] Ανασυγκρότηση του σκληρού δίσκου
Αν και τα Windows 10(Windows 10) το κάνουν αυτό αυτόματα για εσάς, ίσως χρειαστεί να κάνετε ανασυγκρότηση των σκληρών δίσκων περιστασιακά για να βελτιστοποιήσετε την απόδοση:
- Μεταβείτε στο « Αυτός ο υπολογιστής(This PC) » ή « Ο Υπολογιστής μου(My Computer) ».
- Κάντε δεξί κλικ(Right-Click) στη μονάδα σκληρού δίσκου συστήματος (συνήθως μονάδα δίσκου C:).
- Μεταβείτε στα « Εργαλεία(Tools) » στην περιοχή « Ιδιότητες(Properties) » και επιλέξτε « Βελτιστοποίηση(Optimize) ».
- Επιλέξτε τη μονάδα για ανασυγκρότηση και επιλέξτε « Ανάλυση(Analyze) ».
Επανεκκινήστε τον υπολογιστή σας μετά τον νέο κατακερματισμό.
7] ClearPage File κατά τον τερματισμό
Γίνεται πολύπλοκο τώρα – αλλά μην ανησυχείτε. Δείτε πώς μπορείτε να διαγράψετε το Αρχείο σελίδας σε κάθε τερματισμό λειτουργίας(clear the Page File at every shutdown) :
- Πληκτρολογήστε regedit στην Αναζήτηση(Search) για να εκκινήσετε τον Επεξεργαστή Μητρώου(Registry Editor) .
- Εισαγάγετε αυτήν τη διαδρομή:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
- Αλλάξτε την τιμή του ClearPageFileAtShutDown σε '1'.( ClearPageFileAtShutDown to ‘1’.)
- Αποθηκεύστε τις αλλαγές και επανεκκινήστε(Restart) τη συσκευή.
Αυτό πρέπει να το κάνει. Να θυμάστε ότι η διαδικασία τερματισμού λειτουργίας σας θα πάρει λίγο περισσότερο χρόνο.
9] Απενεργοποιήστε το Superfetch
Αυτή η Υπηρεσία των Windows(Windows Service) βελτιστοποιεί την απόδοση ελαχιστοποιώντας το χρόνο εκκίνησης. Επιτρέπει στα Windows(Windows) να διαχειρίζονται τη χρήση RAM . Η ζωή(Life) μετά την απενεργοποίηση του Superfetch(Superfetch) δεν είναι βολική, αλλά κάντε το αν πρέπει. Τουλάχιστον δοκιμάστε αυτό μόνο για να απομονώσετε το πρόβλημα:
- Αναζητήστε το services.msc και μεταβείτε στη Διαχείριση υπηρεσιών.
- Αναζητήστε το " Superfetch " και κάντε δεξί κλικ για να μεταβείτε στις " Ιδιότητες(Properties) ".
- Επιλέξτε « Διακοπή(Stop) ».
- Επίσης « Απενεργοποίηση(Disable) » της υπηρεσίας από το αναπτυσσόμενο μενού.
- Επανεκκινήστε τον υπολογιστή και ελέγξτε εάν η απόδοση έχει βελτιωθεί.
Ενεργοποιήστε το Superfetch εάν αυτό δεν λειτούργησε.
10] Ελέγξτε για κακόβουλο λογισμικό
Χρησιμοποιήστε ένα λογισμικό προστασίας από ιούς τρίτου κατασκευαστή ή το εσωτερικό Windows Defender των Windows 10 για να σαρώσετε και να εξαλείψετε κακόβουλο λογισμικό. Βεβαιωθείτε(Make) ότι το πρόγραμμα προστασίας από ιούς είναι ενημερωμένο για να υποστηρίζει το λειτουργικό σας σύστημα, ώστε να μην καταλήξει να γίνει η αιτία για τη διαρροή μνήμης.
Κάθε λύση που μπορεί να χρειαστείτε για να βρείτε ή να αποτρέψετε τις διαρροές μνήμης βρίσκεται εδώ. Μπορείτε να διαβάσετε περισσότερα σχετικά με τις διαρροές μνήμης στο MSDN και στη Microsoft .
Related posts
Πώς να ανοίξετε και να διαβάσετε αρχεία Small Memory Dump (dmp) στα Windows 11/10
Πώς να εκτελέσετε το Εργαλείο διάγνωσης μνήμης των Windows στα Windows 11/10
Πώς να αυξήσετε το μέγεθος αρχείου σελίδας ή την εικονική μνήμη στα Windows 11/10
Πώς να δημιουργήσετε μη αυτόματα ένα αρχείο Crash Dump στα Windows 11/10
Explorer.exe Υψηλή χρήση μνήμης ή CPU στα Windows 11/10
Πώς να ανοίξετε τις Ιδιότητες συστήματος στον Πίνακα Ελέγχου στα Windows 11/10
Δημιουργία αντιγράφων ασφαλείας, μετακίνηση ή διαγραφή του PageFile.sys κατά τον τερματισμό λειτουργίας στα Windows 11/10
Πώς να ελέγξετε τη σύνδεση τερματισμού λειτουργίας και εκκίνησης στα Windows 11/10
Πώς να μετρήσετε το χρόνο αντίδρασης στα Windows 11/10
Οι ειδοποιήσεις της γραμμής εργασιών δεν εμφανίζονται στα Windows 11/10
Πώς να διορθώσετε 100% δίσκο, υψηλή CPU, υψηλή χρήση μνήμης στα Windows 11/10
Η CPU δεν λειτουργεί με πλήρη ταχύτητα ή χωρητικότητα στα Windows 11/10
Πώς να διορθώσετε τις διαρροές μνήμης των Windows 10
Διορθώστε το σφάλμα εφαρμογής WerMgr.exe ή WerFault.exe στα Windows 11/10
Ενεργοποιήστε ή απενεργοποιήστε την απομόνωση πυρήνα και την ακεραιότητα μνήμης στα Windows 11/10
Ορίστε το Notepad++ ως προεπιλεγμένο πρόγραμμα επεξεργασίας για αρχεία .xml στα Windows 11/10
Συμβουλές και κόλπα για το πρόγραμμα περιήγησης Microsoft Edge για Windows 11/10
Πώς να ενεργοποιήσετε ή να απενεργοποιήσετε τη λειτουργία αρχειοθέτησης εφαρμογών στα Windows 11/10
Το καλύτερο δωρεάν λογισμικό χρονοδιαγράμματος για Windows 11/10
Το κείμενο PDF εξαφανίζεται κατά την επεξεργασία ή την αποθήκευση αρχείου στα Windows 11/10