Comment les choses se passent-elles au sein d'une machine virtuelle. Que ce soit pour résoudre un problème de performance ou pour satisfaire la curiosité, l'interface native JVM TI permet de répondre à cette question.
Une machine virtuelle Java est un environnement logiciel complexe, mais ouvert sur l'extérieur. Elle propose notamment deux interfaces pour travailler avec du code natif. La première interface, JNI, permet d'invoquer, depuis un programme Java, des librairies écrites en C ou C++ pour répondre à un besoin de performance précis. L'autre est JMV Tool Interface ou JVM TI. On utilisera cette interface pour observer le comportement interne d'une JVM au travail ou bien pour déterminer la cause d'un problème de chute de performance ou de deadlock entre deux threads. Nous allons nous divertir un peu avec JVM TI. JVM TI n'est pas le seul moyen de monitorer une JVM. Il existe aussi JMX, pour Java Management Extensions, qui permet de faire ce travail en Java. JMX est à la base de JConsole, un utilitaire inclus dans les JDK depuis Java 5.0. JMX est un sujet à part entière, passionnant lui aussi, que nous aborderons sans doute dans un article à venir. Mais pour aujourd'hui nous dégainons notre bon vieux compilateur C++
Frédéric Mazué