Lors de l'exécution de Java 1.6 (1.6.0_03-b05) app j'ai ajouté l' -XX:+PrintCompilation
drapeau. À la sortie, pour certaines méthodes, en particulier de certains de ceux que je connais sont appelé beaucoup de choses, je vois le texte made not entrant
et made zombie
.
Que veulent-ils dire? Meilleure supposition est que c'est une décompilation étape avant de recompiler soit la méthode ou d'une dépendance avec une plus grande optimisation. Est-ce vrai? Pourquoi "zombie" et "participant"?
Exemple, avec un peu de temps entre certains de ces lignes:
[... near the beginning]
42 jsr166y.LinkedTransferQueue::xfer (294 bytes)
[... much later]
42 made not entrant jsr166y.LinkedTransferQueue::xfer (294 bytes)
--- n sun.misc.Unsafe::compareAndSwapObject
170 jsr166y.LinkedTransferQueue::xfer (294 bytes)
170 made not entrant jsr166y.LinkedTransferQueue::xfer (294 bytes)
4% jsr166y.LinkedTransferQueue::xfer @ 29 (294 bytes)
171 jsr166y.LinkedTransferQueue::xfer (294 bytes)
[... even later]
42 made zombie jsr166y.LinkedTransferQueue::xfer (294 bytes)
170 made zombie jsr166y.LinkedTransferQueue::xfer (294 bytes)
171 made not entrant jsr166y.LinkedTransferQueue::xfer (294 bytes)
172 jsr166y.LinkedTransferQueue::xfer (294 bytes)
[... no further logs]
Plus: quelques brèves informations en expliquant certains des symboles dans cette sortie. Aussi n signifie natif.