2014-07-12 13 views
5

Ich frage mich, ob es möglich ist, den tatsächlichen Maschinencode zu sehen, den der HotSpot-Compiler generiert, wenn er eine Java-Bytecode-Klasse oder Methode kompiliert?Kann der vom JVM-Hotspot-Compiler generierte Maschinencode angezeigt werden?

+0

möglich duplicate von [Wie Bytecode in maschineneigenen Code übersetzen] (http://stackoverflow.com/questions/8167479/how-translate-bytecode-to-machine-native-code) –

+0

Auch wenn es ... es ist wird nicht lesbar sein. – Rahul

+0

Ich möchte es eigentlich nicht verwenden, um die Leistung zu verbessern, nur um den tatsächlichen Maschinencode für einen Computerarchitekturkurs zu sehen. – Recusiwe

Antwort

10

Ja, mit -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly kann die Hotspot-VM Ihnen diese Informationen geben, wenn sie eine gegebene Bytecode-Methode tatsächlich ausführt (kompiliert).

Siehe zum Beispiel HotSpotInternals Wiki:Print Assembly für Details. Es erfordert ein Disassembler-Modul (hsdis - *. Dll unter Windows).

Ein bisschen komfortabler ist die Verwendung JITWatch (aber es verwendet die gleiche Infrastruktur von HotSpot).