> Tech > Ramasse-miettes

Ramasse-miettes

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

L'un des avantages de Java est que les programmeurs n'ont pas besoin d'allouer et de désallouer les objets (ou la mémoire). Dans d'autres langages orientés objet, comme C++, le programmeur se charge de l'allocation et de la désallocation des objets. L'oubli de la désallocation provoque des fuites de mémoire, parfois

Ramasse-miettes

fatales pour les
applications.

Java, en revanche, utilise un système
de ramasse-miettes pour libérer
les objets inutilisés. Pour savoir quand
un objet n’est plus nécessaire, le ramasseramasse-
miettes regarde s’il existe des
références valides le concernant. Les
objets non référencés sont supprimés,
libérant la mémoire associée.

Sur la JVM iSeries, le ramassemiettes
s’effectue en mode asynchrone
continu. Il consomme des
cycles de CPU. On peut donc réduire le
temps consacré au ramasse-miettes et
améliorer la performance, en évitant
des créations d’objets excessives. On
peut aussi améliorer la performance en
limitant la fréquence du ramassemiettes.

L’exécution du ramasse-miettes se
fonde sur la taille initiale du tas, que
l’on peut définir avec les options de la
ligne de commande Java. L’iSeries définit
la taille du tas initiale différemment
des autres plates-formes. Sur ces dernières,
la taille de tas initiale détermine
la quantité initiale de mémoire à  allouer
et la taille de tas maximale détermine
quand le ramasse-miettes s’exécute.
Le plus souvent, la taille de tas
maximale ne devrait pas être indiquée
sur un iSeries. La valeur par défaut est
*NOMAX.

Sur iSeries, le paramètre de taille
de tas initiale est un seuil qui déclenche
un cycle de ramasse-miettes.
Mais ce seuil n’est pas basé sur la taille
absolue du tas ; il dépend plutôt de
combien le tas a grandi depuis le dernier
ramasse-miettes.

Pour WAS, la valeur de taille de tas
initiale par défaut est de 32 Mo. Dès
que 32 Mo d’espace auront été alloués,
le premier cycle de ramasse-miettes
s’exécutera, libérant une partie de la
mémoire pour réutilisation. Si, par
exemple, le ramasse-miettes libère 20
Mo dans le premier cycle de ramassage,
il ne s’exécutera à  nouveau que
quand la taille du tas aura atteint au
moins 52 Mo (32 + 20). Dans certains
cas, la taille du tas se stabilise et cesse
de croître.

L’un des changements les plus faciles
et les plus efficaces concernant un
environnement WAS est d’ajuster la
taille initiale du tas. Essentiellement,
elle détermine la fréquence des ramasse-miettes. En augmentant cet
intervalle sur un système chargé, on
peut améliorer les performances. La
valeur optimale est généralement déterminée
par la méthode empirique
d’essais successifs.

La taille de tas initiale est définie
sur la Console Administrative. Pour déterminer la fréquence des
ramasse-miettes et ajuster en conséquence
la taille de tas initiale, on dispose
d’outils comme la commande
DPMJVM (Dump Java Virtual Machine)
et le WebSphere Resource Analyzer.

Téléchargez cette ressource

Préparer l’entreprise aux technologies interconnectées

Préparer l’entreprise aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010