| maison  | Hardware  | réseaux  | programmation  | Logiciel  | Dépannage  | systèmes |  
programmation  
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Programmation Java

  • Programmation JavaScript

  • PHP /MySQL Programmation

  • programmation Perl

  • Programmation Python

  • Ruby Programming

  • Visual Basics programmation
  •  
    Connaissances Informatiques >> programmation >> Programmation Java >> Content
    HashMap : Comment faire pour éliminer la cause d'une fuite de mémoire
    Les bibliothèques standard pour le langage de programmation Java fournissent la HashMap de classe. Une HashMap est une application de clés de valeurs, où les clés et valeurs peuvent appartenir à n'importe quelle classe de Java donnée. Parmi les autres opérations, HashMap fournit une méthode pour trouver la valeur associée à une clé donnée et d'ajouter et de supprimer ( clé, valeur ) paires de la HashMap . HashMaps sont une source fréquente d'erreurs de fuite de mémoire dans les programmes Java : les instances d'une classe sont gérées correctement par le code, mais une erreur de programmation qui les empêche d'être supprimé de la HashMap quand ils ne sont plus nécessaires . Parce qu'il ya au moins une référence exceptionnelle à ces objets orphelins , garbage collector Java ne peut pas récupérer leur mémoire , de sorte que le runtime Java finalement à court de mémoire de tas. Instructions
    1

    exécuter l'application Java avec l'outil profiler ( HPROF ) activée et l'enregistrement des profils de tas. La manière exacte de le faire dépend du système d'exploitation. Par exemple , sous Linux , démarrez l'application comme suit :

    java- Xrunhprof : file = mylog.txt , tas = des sites myApp

    Remplacer myApp par le nom de votre application Java. Cette invocation démarre la machine virtuelle Java (JVM ) en mode profilage ; . La JVM écrit la sortie du profileur de déposer mylog.txt
    2

    Faites votre processus de demande de certaines charges de travail, de sorte que les objets ( en particulier, HashMaps ) sont alloués et jeté. Prendre un instantané de l'état du tas . Par exemple , sous Linux , le profileur génère un instantané de l'état du tas lorsque vous exécutez :

    tuer -3 jvmPID

    Remplacer jvmPID avec l'identificateur de processus de l'instance JVM qui exécute votre application . HPROF ajoute un instantané du tas pour le contenu actuel du fichier mylog.txt .
    3

    Faites votre processus de demande à peu près la même quantité de travail ainsi que d'autres objets sont créés et ramasse-miettes . Prendre un autre cliché de l'état de la pile comme à l'étape 2.
    4

    comparer les deux photos prises dans les étapes 2 et 3. En particulier , regardez les lignes entre «sites BEGIN " et " END SITES . " Identifier les classes dont les objets ont le plus augmenté en nombre entre les deux clichés , ceux sont les seuls responsables de fuites de mémoire, que la charge traitée par votre application est à peu près constante sur les deux clichés
    5

    Examiner . les clichés d'identifier les parties du code allouer des objets qui ne reçoivent pas libérés lorsque cela est nécessaire . Pour cela, se concentrer sur les lignes commençant par «trace» qui ont un événement « " sur la ligne d'instantané , pour chacune des catégories identifiées à l'étape 4.
    6

    Inclure l' suppressions manquantes de références à des classes de problèmes pour les parties de votre code identifiés à l'étape 5. Les fuites de mémoire ne se produira plus .

    Previous :

    next :
      articles connexes
    ·Comment appeler une méthode non statique d'une méthod…
    ·Comment faire pour supprimer un élément dans MIDP 2.0…
    ·Avantages et inconvénients des machines virtuelles Jav…
    ·Qu'est-ce qu'une exception de pointeur nul 
    ·Comment formater la largeur des flotteurs en Java 
    ·Comment faire pour convertir classe Java à code 
    ·Comment coder options doubles utilisant les technologie…
    ·Comment remplacer NetBeans 
    ·Comment éviter Exception de pointeur NULL dans Java 
    ·Exceptions définies par l'utilisateur en Java 
      articles en vedette
    ·Comment convertir des nombres binaires 
    ·Comment faire QBasic Imprimer 
    ·Comment faire pour trouver une chaîne en Java 
    ·Comment faire pour afficher des données dans un DataGr…
    ·Comment utiliser la boîte combo avec Netbeans GUI 
    ·Comment utiliser VBA pour lire un document Microsoft Wo…
    ·Comment faire pour copier le contenu du fichier dans Wo…
    ·Comment faire des cookies informatiques 
    ·Comment faire un exe à partir d'un fichier Python 
    ·Un ActiveX Javascript Tutorial 
    Copyright © Connaissances Informatiques http://fr.wingwit.com