Passer au contenu

La machine virtuelle Java

Processeur virtuel exécutant le langage Java indépendamment du système hôte, la machine virtuelle Java manque de rapidité.

Si Java peut sembler lent, c’est qu’il s’agit d’un langage interprété consommant beaucoup de mémoire “, explique David Merceron, consultant chez Arthur Andersen.Cela ne poserait pas de problèmes si la machine virtuelle pouvait gérer elle-même sa mémoire.Mais tel n’est pas le cas.Dans la machine virtuelle Java (JVM), c’est le ramasse-miettes (RM) – ou garbage collector – qui se charge d’éviter que la mémoire allouée par le système d’exploitation soit saturée.Cet algorithme récupère l’espace occupé par des objets devenus inutiles à la poursuite du programme.Le fonctionnement du RM est souvent erratique et autoritaire.Il est respon- sable, à plusieurs niveaux, de la lenteur des machines virtuelles.Si la mémoire est saturée, il empêche pendant un certain temps l’exécution de la suite du programme.Il faut donc faire en sorte que son intervention soit plus régulière.Pour cela, on a recours au principe des ” lignes d’eau ” : le développeur définit différents niveaux d’occupation de la mémoire, ce qui déclenche l’algorithme avant que celle-ci soit totalement saturée.De plus, il est possible d’affecter au ramasse-miettes un niveau de priorité.Ainsi, plus le niveau d’occupation de la mémoire est élevé, plus la priorité fixée au RM est grande.Ce qui doit permettre une meilleure répartition des charges dans le temps.Les programmeurs Java peuvent tout de même commander son intervention au cours de l’exécution, mais son déclenchement ne sera pas instantané.Les algorithmes les plus utilisés, comme Mark & Sweep (marquer et balayer), fonctionnent, en effet, de manière asynchrone.Il est donc prévu de livrer des RM synchrones dans les prochains kits de développement Java.Autres méthodes : ne pas les intégrer, ou proposer plusieurs types d’algorithmes, selon le matériel concerné.

🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.


Renaud Edouard