java PrintCompilation Ausgabe: was ist die Bedeutung von "nicht Teilnehmer" und "made zombie"
Beim ausführen eines Java 1.6 (1.6.0_03-b05) app, die ich Hinzugefügt habe, die -XX:+PrintCompilation
Flagge. Auf die Ausgabe für einige Methoden, insbesondere einige von denen, die ich kenne, sind immer aufgerufen, eine Menge, ich sehe den text made not entrant
und made zombie
.
Was bedeuten diese? Beste Vermutung ist, dass es eine Dekompilierung Schritt vor dem kompilieren entweder Methode oder eine Abhängigkeit mit mehr Optimierung. Ist das wahr? Warum "zombie" und "Teilnehmer"?
Beispiel, mit sehr wenig Zeit zwischen diesen Zeilen:
[... 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]
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich zusammen gezogen, einige Infos über das auf mein blog. Eine Klippe, Klicken Sie auf Kommentar, den ich gefunden, der sagt:
Dies ist absolut nicht eine Fläche von know-how für mich, aber ich war interessiert, und so hat sich auch ein bisschen Graben.
Ein paar links, die Sie interessant finden könnte: OpenJDK:nmethod.cpp, OpenJDK:nmethod.hpp.
Einen Auszug aus
nmethod.hpp
:Nur als Ausgangspunkt.
Eine neuere Erklärung ist die, dass es Einträge wie diese im log:
Dies bedeutet, dass eine Methode (
second
hier) zusammengestellt worden, unter tier-level 3, dann unter tier-level4
wurde es noch weiter optimiert und es wurde gemacht nicht Teilnehmer für die 3-d-tier, das heißt, es wird ersetzt mit dem code aus der 4-TEN Rang.Hier eine Zusammenfassung mit einer unglaublichen Menge an Informationen auf
PrintCompilation
. Konkret heißt es: