Quando si esegue un'applicazione Java 1.6 (1.6.0_03-b05), ho aggiunto il flag -XX:+PrintCompilation
. Sull'output di alcuni metodi, in particolare alcuni di quelli che so vengono chiamati molto, vedo il testo made not entrant
e made zombie
.Output java PrintCompilation: qual è il significato di "made not entrant" e "made zombie"
Cosa significano? La migliore ipotesi è che si tratta di un passaggio di decompilazione prima di ricompilare il metodo o una dipendenza con una maggiore ottimizzazione. È vero? Perché "zombie" e "entrante"?
esempio, con un po 'di tempo tra alcune di queste linee:
[... 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 ha scritto una risposta a JodaStephen, che ora è collegata dal suo blog ed è ancora più completa nella sua descrizione di -XX: + PrintCompilation; ecco il link: https://gist.github.com/1165804#file_notes.md – Blaisorblade