background preloader

Optimisation - Fuites mémoires

Facebook Twitter

MilamberSpace – JMeter » JMeter – Test de charges. Jmap - Memory Map. Java HotSpot VM Options. Please note that this page only applies to JDK 7 and earlier releases.

Java HotSpot VM Options

For JDK 8 please see the Windows, Solaris, Linux and Mac OS X reference pages. This document provides information on typical command-line options and environment variables that can affect the performance characteristics of the Java HotSpot Virtual Machine. Unless otherwise noted, all information in this document pertains to both the Java HotSpot Client VM and the Java HotSpot Server VM. Categories of Java HotSpot VM Options Standard options recognized by the Java HotSpot VM are described on the Java Application Launcher reference pages for Windows and Solaris & Linux. Options that begin with -X are non-standard (not guaranteed to be supported on all VM implementations), and are subject to change without notice in subsequent releases of the JDK. Some Useful -XX Options Default values are listed for Java SE 6 for Solaris Sparc with -server. The options below are loosely grouped into categories.

Memory Analyzer (MAT) : pistons les fuites mémoire. Alors que l’on nous a toujours expliqué que Java s’occupait tout seul du nettoyage des objets inutilisés avec son Garbage Collector, tous les développeurs ont un jour, sur l’un de leurs projets, découvert qu’ils pouvaient faire une fuite de mémoire avec comme sentence le fatal : OutOfMemoryException.

Memory Analyzer (MAT) : pistons les fuites mémoire

Cette erreur est d’autant plus difficile à analyser que les développements ne se font plus de zéro mais sont souvent l’accumulation de différents frameworks le tout étant déployé dans un serveur d’applications. Heureusement pour nous, des outils existent pour y voir plus clair, Optimize It a été l’un des précurseurs, les plus connus actuellement sont YourKit, JProfiler ou JProb Ce sont des produits commerciaux de qualité, mais les développeurs n’ont pas toujours la possibilité de les avoir.

Et dans le monde du gratuit ? Découverte de Memory Analyzer Malgré cette jeunesse, le produit est déjà riche en fonctionnalités, il apporte des fonctionnalités intéressantes : Récupération du dump. Audit des performances d'une application en Java EE. Si les tests de charge n'ont pas été concluants, il va falloir chercher d'où vient le problème.

Audit des performances d'une application en Java EE

Pour cela il existe un certain nombre d'outils. Les problèmes possibles sont ici regroupés avec une solution possible et comment le détecter. Avec le test de charge on a pu avoir des temps de réponse de manière globale, il est temps de regarder de manière plus précise. A l'aide du profiler, on va pouvoir calculer pour chaque package/class/méthode/... du programme : le temps d'exécution; le nombre d'utilisations. Il faudra chercher à optimiser les parties : ayant le plus grand temps d'exécution et utiliser un certain nombre de fois; utilisées de nombreuses fois.

Il faut faire attention, un temps d'exécution d'une méthode peut être long car il est en attente de quelque chose (par exemple le résultat d'une requête SQL) et dans ce cas là, la partie à optimiser est la requête SQL et non la méthode en elle-même. Détecter et corriger les fuites mémoire java - Blog de David MASCLET. La gestion de la mémoire en Java La JVM dispose de plusieurs zones mémoire distinctes : La pile (ou heap), est l'espace mémoire où tous les objets et tableaux sont stockés.

Détecter et corriger les fuites mémoire java - Blog de David MASCLET

Lorsque la JVM démarre, la pile est initialisée à la valeur spécifiée par -Xms et elle grandira dynamiquement quand les objets seront crées, jusqu'à ce qu'elle atteigne sa taille maximale spécifiée par le paramètre -Xmx. Si la taille maximale est atteinte, et que plus de mémoire est nécessaire, la JVM générera une java.lang.OutOfMemoryError: Java heap space.Permgen space : il s'agit de l'espace mémoire qui est alloué pour le chargement des classes (pas les objets).

A la différence de la pile, la taille de cette région est fixe et ne varie plus après le démarrage de la JVM. Chaque instance de classe a une taille en mémoire, cette taille appelée "Shallow Heap" est constituée de types primitifs (int, char, ...). Les références peuvent être de plusieurs types. Empreinte de la mémoire (Heap dump) Ces dumps contiennent : . Fuite mémoire « Thomas COURANT. Lorsque vous voulez analyser la mémoire de votre programme java, le jdk 6 propose des outils puissants et relativement simples à utiliser.

fuite mémoire « Thomas COURANT

Pré-requis : Il vous faut le jdk5 minimum. Il vous faut télécharger le plugin ‘eclipse memory analyzer‘ pour Eclipse, à installer depuis cet url à saisir dans le menu d’aide d’Eclipse, puis ‘mise à jour’. La plupart des nouvelles fonctions de supervision sont regroupé via l’interface JMX, c’est pour cela qu’il est nécessaire d’activer JMX sur votre programme. Pour cela, dans les options de ligne de commande du lancement de votre application, rajouter les options: