java PrintCompilation输出: "made not entrant" 和 "made zombie" 的含义是什么?

7 浏览
0 Comments

java PrintCompilation输出: "made not entrant" 和 "made zombie" 的含义是什么?

当运行一个Java 1.6 (1.6.0_03-b05)应用程序时,我添加了-XX:+PrintCompilation标志。在某些方法的输出中,特别是我知道被频繁调用的一些方法中,我看到了文本made not entrantmade 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)
[...没有更多的日志]

0