Rechercher et corriger les fuites de mémoire dans Windows 11/10
Une fuite de mémoire(Memory Leak) est un mauvais placement de ressources dans un programme informatique en raison d'une mauvaise allocation de mémoire. Cela se produit lorsqu'un emplacement RAM non utilisé reste inédit. Une fuite de mémoire ne doit pas être confondue avec une fuite d'espace, qui fait référence à un programme utilisant plus de RAM que nécessaire. Une fuite de mémoire sur un système Windows 11/10/8/7 aurait eu lieu lorsque la mémoire n'est tout simplement pas accessible bien qu'elle ne soit pas utilisée.
Fuites de mémoire dans Windows 11/10
Avant de commencer, vous devez savoir qu'une fuite de mémoire(Memory) est un problème logiciel à déboguer - par exemple dans Java , JavaScript , C/C++, Windows , etc. Il n'est pas nécessaire de remplacer physiquement la RAM(RAM) ou le disque dur.
Pourquoi est-ce mauvais
Il est évident qu'une fuite de mémoire est mauvaise car c'est un bogue, une faille du système. Mais découvrons comment cela affecte exactement le système :
- Étant donné que la mémoire n'est pas libérée même lorsqu'elle n'est pas utilisée, cela entraîne un épuisement de la mémoire.
- L'épuisement de la mémoire entraîne un vieillissement du logiciel.
- La réduction de la mémoire disponible entraîne une augmentation du temps de réponse et des performances médiocres du système.
- Une fuite de mémoire non contrôlée peut éventuellement entraîner le plantage d'une application.
Afin d'identifier une fuite de mémoire, un programmeur doit avoir accès au code source du programme.
Localisation de la fuite
Pour résoudre un problème, il faut d'abord l'identifier. Les étapes de base pour localiser une fuite de mémoire sont les suivantes :
- Affirmation : Déterminer si une fuite s'est produite.
- Recherche de fuite de mémoire en mode noyau(Finding Kernel-mode memory leak) : Localisation d'une fuite causée par un composant du pilote en mode noyau.
- Recherche de fuite de mémoire en mode utilisateur(Finding User-mode memory leak) : Localisation d'une fuite causée par un pilote ou une application en mode utilisateur.
Allocation de mémoire
Il existe différents modes dans lesquels les applications allouent de la RAM(RAM) . Si l'espace n'est pas libéré après utilisation, la fuite de mémoire se produira quel que soit le mode d'allocation. Certains modèles d'allocation courants sont :
- Fonction HealAlloc(HealAlloc) pour l'allocation de mémoire de tas. Les équivalents d'exécution C/C++ sont malloc et new.
- Fonction VirtualAlloc(VirtualAlloc) pour une allocation directe depuis le système d'exploitation.
- API Kernel32(Kernel32 APIs) pour conserver la mémoire du noyau pour l'application. Exemple(Example) , CreateFile , CreateThread .
- API User32 et API Gdi32.
Empêcher les fuites de mémoire dans Windows
Nous savons tous qu'il vaut mieux prévenir que guérir, alors voici quelques moyens d'éviter une fuite de mémoire.
Habitudes de surveillance
Vous devez garder un œil sur l'utilisation anormale de la RAM par des programmes et des applications individuels. Vous pouvez accéder au Gestionnaire des tâches de Windows(Windows Task Manager) en appuyant sur CTRL+SHIFT+ESC et ajouter les colonnes comme Handles , User Objects , GDI Objects , etc.
Cela vous aidera à surveiller facilement l'utilisation des ressources.
Lire(Read) : Quels sont les types de mémoire d'un ordinateur ?(What are the Types of Memory in a computer?)
(Microsoft)Outils Microsoft pour diagnostiquer les fuites de mémoire
Divers outils diagnostiquent les fuites de mémoire pour différents modes d'allocation :
- Application Verifier diagnostique les fuites de tas.
- UMDH (un composant des outils de débogage Windows(Windows Debugging Tools) ) diagnostique les fuites pour les processus individuels en surveillant les allocations de mémoire de tas.
- Trace Capture pour une analyse approfondie de l'utilisation de la RAM(RAM) .
- Xperf suit également les modèles d'allocation de tas.
- CRT Debug Heap suit non seulement les allocations de tas, mais permet également des pratiques de codage pour minimiser les fuites.
- JavaScript Memory Leak Detector débogue les fuites de mémoire dans les codes.
Conseils d'utilisation
- Utilisez les HANDLE(HANDLE) du noyau et d'autres pointeurs intelligents pour les ressources Win32 et les allocations de tas.
- Obtenez(Get) des classes pour la gestion automatique des ressources pour les allocations de noyau à partir de la bibliothèque ATL . La norme C++ a auto_ptr pour les allocations de tas.
- Encapsulez(Encapsulate COM) les pointeurs d'interface COM dans des "pointeurs intelligents" à l'aide de _com_ptr_t ou _bstr_t ou _variant_t .
- Surveillez(Monitor) le code .NET pour une utilisation anormale de la mémoire.
- Évitez(Avoid) les chemins de sortie multiples pour les fonctions afin de libérer les allocations des variables dans la plupart des blocs à la fin d'une fonction.
- N'utilisez(Use) les exceptions natives qu'après avoir libéré toutes les allocations dans le bloc _finally . Enveloppez(Wrap) toutes les allocations de tas et de poignée dans des pointeurs intelligents afin d'utiliser des exceptions C++.
- Appelez toujours la fonction PropVariantClear avant de réinitialiser ou de supprimer un objet PROPVARIANT .
Résoudre(Troubleshoot) les fuites de mémoire dans Windows
Tout comme les différentes façons d'empêcher les fuites de mémoire, il existe différentes façons d'arrêter les fuites de mémoire. Mais avant de commencer, n'oubliez pas de créer d'abord un point de restauration système .
1] Fermez les processus et redémarrez.
Si vous voyez qu'un processus inutile prend trop de RAM , vous pouvez terminer le processus dans le Gestionnaire(Task Manager) des tâches . Vous devrez redémarrer l'appareil afin que l'espace libéré soit disponible pour être utilisé par d'autres processus. Sans redémarrage(Restart) , le problème de fuite de mémoire ne sera pas résolu. Un processus particulier qui a des bugs pour ralentir le PC est Runtime Broker . Essayez si la désactivation de cela seul fonctionne.
2] Outils de diagnostic de la mémoire
Pour accéder à l' outil de diagnostic de la mémoire(Memory Diagnostic Tool) intégré pour Windows :
- Enregistrez tout votre travail important.
- Appuyez sur Win + R pour ouvrir la fenêtre Exécuter .(Run)
- Tapez la commande mdsched.exe dans la fenêtre Exécuter .(Run)
- Redémarrez le PC.
- Après un redémarrage, effectuez une analyse de base ou optez pour les options ' Avancé(Advanced) ' comme ' Test mix ' ou ' Pass count '.
- Appuyez sur F10 pour démarrer le test.
Ce sont encore des correctifs temporaires.
3] Vérifiez les mises à jour du pilote
Les pilotes obsolètes provoquent des fuites de mémoire. Maintenez tous les pilotes à jour :
- Appuyez sur Win + R et ouvrez la fenêtre Exécuter . (Run)Tapez devmgmt.msc et appuyez sur Entrée(Enter) . Cela vous mènera au Gestionnaire(Device Manager) de périphériques .
- Recherchez(Check) les pilotes obsolètes et mettez-les tous à jour.
- Pour les mises à jour que vous avez peut-être manquées, consultez Windows Update .
C'était simple.
4] Optimiser les performances
L'ajustement de Windows pour les performances gérera tout, y compris la planification du processeur et l'utilisation de la mémoire pour arrêter les fuites de mémoire. Suivez ces étapes:
- Faites un clic droit sur ' Ce PC(This PC) ' et sélectionnez les paramètres ' Avancés ' dans le volet de gauche.(Advanced)
- Sous l' onglet ' Avancé ', allez dans ' (Advanced)Performance ', suivi de ' Paramètres(Settings) '.
- Cochez ' Ajuster pour obtenir les meilleures performances(Adjust for best performance) ' et cliquez sur OK .
- Redémarrez(Restart) et vérifiez si le problème est résolu.
Si cette solution simple n'a pas fonctionné, essayez la solution suivante.
5] Désactiver les programmes(Programs) en cours d'exécution au démarrage(Startup)
La désactivation des programmes gênants est le seul moyen de se débarrasser du problème de fuite de mémoire. Accédez au Gestionnaire(Task Manager) des tâches et désactivez le programme de création de problèmes. Si vous ne savez pas quels programmes créent le problème, procédez comme suit :
- Allez dans ' Gestionnaire(Task Manager) des tâches '.
- Allez dans ' Démarrage(Startup) '.
- Désactivez les programmes de démarrage(Disable the startup programs) que vous n'avez pas besoin d'exécuter par défaut.
6] Défragmenter le disque dur
Bien que Windows 10 le(Windows 10) fasse automatiquement pour vous, vous devrez peut-être défragmenter les disques durs de temps en temps pour optimiser les performances :
- Allez dans ' Ce PC(This PC) ' ou ' Poste de travail(My Computer) '.
- Cliquez avec(Right-Click) le bouton droit sur le disque dur du système (généralement le lecteur C:).
- Allez dans ' Outils(Tools) ' sous ' Propriétés(Properties) ' et sélectionnez ' Optimiser(Optimize) '.
- Sélectionnez le lecteur à défragmenter et sélectionnez ' Analyser(Analyze) '.
Redémarrez votre ordinateur après la nouvelle fragmentation.
7] Fichier ClearPage à l'arrêt
Cela devient complexe maintenant – mais ne vous inquiétez pas. Voici comment effacer le Page File à chaque arrêt(clear the Page File at every shutdown) :
- Tapez regedit sur Rechercher(Search) pour lancer l' Éditeur du Registre(Registry Editor) .
- Saisissez ce chemin :
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
- Remplacez la valeur de ClearPageFileAtShutDown par '1'.( ClearPageFileAtShutDown to ‘1’.)
- Enregistrez les modifications et redémarrez(Restart) l'appareil.
Cela devrait le faire. N'oubliez pas que votre processus d'arrêt prendra un peu plus de temps.
9] Désactiver la super récupération
Ce service Windows(Windows Service) optimise les performances en minimisant le temps de démarrage. Il permet à Windows de gérer l'utilisation de la RAM . La vie(Life) après la désactivation de Superfetch n'est pas pratique, mais faites-le si vous le devez. Essayez au moins ceci seul pour isoler le problème:
- Recherchez services.msc et accédez au gestionnaire de services.
- Recherchez ' Superfetch ' et cliquez dessus avec le bouton droit de la souris pour accéder à ' Propriétés(Properties) '.
- Sélectionnez ' Arrêter(Stop) '.
- Aussi ' Désactiver(Disable) ' le service dans le menu déroulant.
- Redémarrez le PC et vérifiez si les performances se sont améliorées.
Activez Superfetch si celui-ci n'a pas fonctionné.
10] Vérifiez les logiciels malveillants
Utilisez un logiciel antivirus tiers ou Windows Defender interne de Windows 10 pour analyser et éliminer les logiciels malveillants. Assurez(Make) -vous que l'antivirus est mis à jour pour prendre en charge votre système d'exploitation afin qu'il ne devienne pas la cause de la fuite de mémoire.
Toutes les solutions dont vous pourriez avoir besoin pour trouver ou prévenir les fuites de mémoire se trouvent ici. Vous pouvez en savoir plus sur les fuites de mémoire sur MSDN et Microsoft .
Related posts
Comment ouvrir et lire les fichiers Small Memory Dump (DMP) dans Windows 10
Comment exécuter Windows Memory Diagnostics Tool dans Windows 11/10
Comment augmenter Page File size ou mémoire virtuelle dans Windows 10
Comment créer manuellement un Crash Dump file en Windows 10
Explorer.exe High Memory or CPU usage en Windows 10
Comment ajouter un Trusted Site dans Windows 10
Fix Crypt32.dll introuvable ou manquante erreur dans Windows 11/10
Comment mapper un Network Drive ou ajouter un FTP Drive dans Windows 11/10
Comment mesurer Reaction Time dans Windows 11/10
Comment créer un Radar Chart dans Windows 11/10
Comment tester Webcam dans Windows 11/10? Est-ce que ça marche?
Comment désactiver Find My Device option dans Windows 10 Paramètres
Comment utiliser Alarms and Clocks app de Windows 10
Adjust VOTRE Monitor pour le meilleur screen resolution à Windows 10
Comment vérifier l'Shutdown and Startup Log dans Windows 10
Set Notepad++ comme default editor pour les fichiers .xml en Windows 11/10
Comment changer Webcam par défaut dans Windows 10 ordinateur
HDMI playback DISPOSITIF NON VOIR DANS Windows 10
Qu'est-ce qu'un PPS file? Comment convertir PPS en PDF dans Windows 11/10?
Activer ou désactiver Core Isolation and Memory Integrity dans Windows 10