Voici un extrait de la sortie que je reçois quand j'exécute la commande suivante (40 est juste un arg au programme Fibonacci) :Comment interpréter la sortie de -XX: CompileCommand = "print Class :: Method" en java
java -XX: + UnlockDiagnosticVMOptions -XX: CompileCommand = "print :: Fibonacci fibonacci" 40 Fibonacci
quelqu'un peut-il expliquer la signification de chaque donnée (je suppose que cela signifie que le nombre d'octets, par exemple, principale le code prend 288 octets). En outre, que signifient les différentes catégories - relocalisation, code de stubs, métadonnées, données d'étendues, étendues pcs, handler table etc?
...
Compiled method (c2) 93 16 4 Fibonacci::fibonacci (22 bytes)
total in heap [0xfff8000108113dd0,0xfff8000108114440] = 1648
relocation [0xfff8000108113f00,0xfff8000108113f48] = 72
main code [0xfff8000108113f60,0xfff8000108114080] = 288
stub code [0xfff8000108114080,0xfff80001081141e0] = 352
oops [0xfff80001081141e0,0xfff80001081141e8] = 8
metadata [0xfff80001081141e8,0xfff8000108114210] = 40
scopes data [0xfff8000108114210,0xfff8000108114298] = 136
scopes pcs [0xfff8000108114298,0xfff80001081143d8] = 320
dependencies [0xfff80001081143d8,0xfff80001081143e0] = 8
handler table [0xfff80001081143e0,0xfff8000108114440] = 96
----------------------------------------------------------------------
Fibonacci.fibonacci [0xfff8000108113f60, 0xfff80001081141e0] 640 bytes
[Entry Point]
[Verified Entry Point]
[Constants]
# {method} {0xfff80001036243b8} 'fibonacci' '(I)J' in 'Fibonacci'
# parm0: I0 = int
# [sp+0x90] (sp of caller)
...
Je n'ai pas une bonne explication, mais ils viennent de ['nmethod :: print'] (http://hg.openjdk.java.net/jdk8/jdk8/hotspot/file/87ee5ee27509/ src/share/vm/code/nmethod.cpp # l2491). La plupart des champs sont déclarés dans ['CodeBlob'] (http://hg.openjdk.java.net/jdk8/jdk8/hotspot/file/87ee5ee27509/src/share/vm/code/codeBlob.hpp#l56), qui a quelques commentaires sur ce qu'ils sont. –