Cuando ejecuto una aplicación Java 1.6 (1.6.0_03-b05) agregué el -XX:+PrintCompilation
. En el resultado de algunos métodos, en particular algunos de los que conozco se llaman mucho, veo el texto made not entrant
y made zombie
.java PrintCompilation output: cuál es el significado de "made not entrant" y "made zombie"
¿Qué significa esto? La mejor suposición es que es un paso de descompilación antes de volver a compilar ese método o una dependencia con una mayor optimización. ¿Es eso cierto? ¿Por qué "zombie" y "entrante"?
ejemplo, con un poco de tiempo entre algunas de estas líneas:
[... 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]
Kris Mok escribió una respuesta a JodaStephen, que ahora está vinculada desde su blog y es aún más completa en su descripción de -XX: + PrintCompilation; aquí está el enlace: https://gist.github.com/1165804#file_notes.md – Blaisorblade