java PrintCompilation输出: "made not entrant" 和 "made zombie" 的含义是什么?
java PrintCompilation输出: "made not entrant" 和 "made zombie" 的含义是什么?
当运行一个Java 1.6 (1.6.0_03-b05)应用程序时,我添加了-XX:+PrintCompilation
标志。在某些方法的输出中,特别是我知道被频繁调用的一些方法中,我看到了文本made not entrant
和made zombie
。它们的含义是什么?最好的猜测是在重新编译该方法或依赖项之前,进行了反编译步骤以获得更高的优化。这是正确的吗?为什么会有"zombie"和"entrant"这样的词?
例如,在某些行之间有相当长的时间间隔:
[...在开头附近] 42 jsr166y.LinkedTransferQueue::xfer (294 bytes) [...很久以后] 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) [...更晚一些] 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) [...没有更多的日志]