Identification des échecs de compilation JIT

Pour les échecs de compilation JIT, analysez la sortie des erreurs pour déterminer si l'échec se produit lorsque le compilateur JIT tente de compiler une méthode.

Si la machine JVM tombe en panne et que l'échec s'est produit dans la bibliothèque JIT (libj9jit<vm_version>.so), le compilateur JIT a peut-être échoué lors de la tentative de compilation d'une méthode. Sur les systèmes Windows, la bibliothèque JIT est j9jit< vm_version>.dll.
Remarque: < vm_version> est le numéro de version de la machine virtuelle, comme indiqué par la commande java -version , mais sans ponctuation. Par exemple, dans la ligne de sortie suivante, la version est29:
IBM J9 VM build 2.9, JRE 1.8.0 Linux x86-32 20161114_326069 (JIT enabled, AOT enabled)
Si une sortie d'erreur similaire à celle ci-dessous s'affiche, vous pouvez l'utiliser pour identifier la méthode défaillante :
Unhandled exception
Type=Segmentation error vmState=0x00050000
Target=2_30_20051215_04381_BHdSMr (Linux 2.4.21-32.0.1.EL)
CPU=ppc64 (4 logical CPUs) (0xebf4e000 RAM)
J9Generic_Signal_Number=00000004 Signal_Number=0000000b Error_Value=00000000 Signal_Code=00000001
Handler1=0000007FE05645B8 Handler2=0000007FE0615C20
R0=E8D4001870C00001 R1=0000007FF49181E0 R2=0000007FE2FBCEE0 R3=0000007FF4E60D70
R4=E8D4001870C00000 R5=0000007FE2E02D30 R6=0000007FF4C0F188 R7=0000007FE2F8C290
...... Module=/home/test/sdk/jre/bin/libj9jit<vm_version>.so
Module_base_address=0000007FE29A6000
...... 
Method_being_compiled=com/sun/tools/javac/comp/Attr.visitMethodDef(Lcom/sun/tools/javac/tree/
JCTree$JCMethodDecl;)
Les lignes importantes sont les suivantes :
vmState=0x00050000
Indique que le compilateur JIT compile du code. Pour obtenir la liste des numéros de code vmState , consultez le tableau des indicateurs de machine virtuelle dans la section Java dump GPINFO.
Module=/home/test/sdk/jre/bin/libj9jit< version_vm>.so
Indicates que l'erreur s'est produite dans libj9jit<vm_version>.so, le module de compilation JIT.
Method_being_compiled=
Indique la méthode Java™ en cours de compilation.
Si votre sortie n'indique pas la méthode défaillante, utilisez l'option verbose avec les paramètres supplémentaires suivants :
-Xjit:verbose={compileStart|compileEnd}

Ces paramètres verbose signalent le moment où JIT commence à compiler une méthode etla fin de la compilation. Si le JIT échoue sur une méthode particulière (c'est-à-dire qu'il démarre la compilation, mais tombe en panne avant de pouvoir se terminer), utilisez le paramètre exclude pour l'exclure de la compilation (voir Localisation de la méthode défaillante). Si le fait d'exclure la méthode de la compilation empêche tout nouveau plantage, vous tenez la solution que vous pouvez appliquer provisoirement en attendant que l'équipe support remédie au problème.