Académique Documents
Professionnel Documents
Culture Documents
Il existe plusieurs types de fuites de mémoire : fuites d'unité d'exécution et ThreadLocal, fuites
ClassLoader, fuites de ressource système et fuites de connexion. Les approches de détection des
fuites de mémoire impliquent généralement l'examen des compteurs JVMTI (Java virtual
machine tool Interface) ou PMI (Performance Monitoring Infrastructure) pour surveiller la
croissance lente de l'utilisation du segment de mémoire Java ou natif.
La plupart des fuites de mémoire se présentent sous forme de fuites de chargeur de classe. Une
classe Java est identifiée de manière un ique par son nom et par le chargeur de classe qui l'a
chargée. Les classes du même nom peuvent être chargées plusieurs fois dans une machine
virtuelle Java unique, chacune dans un chargeur de classe différent. Chaque application Web
obtient son propre chargeur de classe et c'est ce que WebSphere Application Server utilise pour
isoler les applications.
Un objet détient une référence à la classe dont elle est l'instance. Une classe détient une référence
au chargeur de classe qui l'a chargée. Le chargeur de classe détient une référence à chaque classe
qu'il a chargée. La détention d'une référence à un objet unique à partir d'une application Web
identifie chaque classe chargée par l'application Web. Ces références sont généralement
conservées après le rechargement d'une application Web. Avec chaque rechargement, des classes
supplémentaires sont identifiées, ce qui conduit à une erreur d'insuffisance de mémoire.
Les fuites de mémoire de chargeur de classe sont généralement occasionnées par le code
d'application ou le code JRE.
Des fuites de mémoire se produisent lorsque le code de l'environnement d'exécution Java (JRE)
utilise le chargeur de classe de contexte pour charger un singleton d'application. Ces singletons
peuvent être des unités d'exécution ou d'autres objets chargés par le JRE à l'aide du chargeur de
classe de contexte.
Si le code d'application Web déclenche l'initialisation d'un singleton ou d'un initialiseur statique,
les conditions suivantes s'appliquent :
Dans cet exemple, les objets str1 et str2 sont comparés avec l'opérateur d'égalité (==), ce qui
compare les références mémoire et non les valeurs des objets. Pour comparer le contenu des
chaînes, il faut utiliser la méthode equals().
Dans cet exemple, l'opérateur logique && est utilisé pour vérifier si x et y sont tous deux positifs.
Cependant, si l'intention était de vérifier si au moins l'un des nombres est positif, il faudrait
utiliser l'opérateur logique ||.
Dans cet exemple, un tableau est déclaré avec trois éléments mais lorsqu'on essaie d'accéder à
l'élément à l'index 3 (qui n'existe pas), une erreur d'exécution
(ArrayIndexOutOfBoundsException) sera levée.
7. « Bretelles » manquantes
Laisser des accolades {} dans la ligne de codes tels que ( { et } ) peut conduire à un résultat
désastreux. Cela arrive souvent lorsqu’un développeur oublie de mettre une accolade ouverte et
exécute le code et que les développeurs au niveau débutant commettent ces erreurs si souvent au
cours de leur période initiale. Cependant, les IDE et les compilateurs peuvent identifier ces
petites erreurs, mais il faut veiller à garder un œil attentif lors de l’ouverture des accolades et à les
fermer immédiatement lors du passage à la section de code suivante.
Nous résumons ceci en disant que Les erreurs courantes en Java sont des erreurs de
programmation qui peuvent survenir lors du développement d'applications en Java. Ces erreurs
peuvent causer des dysfonctionnements dans le programme et affecter sa performance. Il est
important de les identifier et de les corriger rapidement pour garantir le bon fonctionnement de
l'application. EN plus des exemples cités plus haut
2. Erreur de logique : Les erreurs de logique sont des erreurs qui surviennent lorsque la
logique du programme est incorrecte. Cela peut se produire lorsque les conditions d'une
boucle ou d'une instruction if ne sont pas correctement définies, ce qui entraîne un
comportement inattendu du programme.
3. Erreur de type : Les erreurs de type surviennent lorsque un objet est utilisé avec un type
incorrect. Par exemple, essayer d'appeler une méthode sur un objet qui n'a pas cette
méthode définie entraînera une erreur de type.