Java 1.6 (1.6.0_03-b05) アプリを実行するときに、-XX:+PrintCompilation
フラグを追加しました。一部のメソッド、特に私が知っているいくつかのメソッドの出力では、テキストmade not entrant
とmade zombie
.
これらはどういう意味ですか?最良の推測は、そのメソッドまたは依存関係をより最適化して再コンパイルする前の逆コンパイルステップであるということです。本当?なぜ「ゾンビ」と「エントラント」なのか?
例、これらの行のいくつかの間にかなりの時間があります:
[... 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]