ich wirklich kämpfen, um die folgende SacheWas ist die Verwendung von JVM, wenn JIT Durchführung Bytecode Umstellung auf Maschinenbefehle ist
Bisher weiß ich zu verstehen:
Wenn ein Java-Programm kompiliert wird .class
Datei generiert wird . In diesem Code ist in Form von Bytes. Dann übersetzt der JVM
diesen Byte-Code in maschinenlesbares Format.
Jetzt sehe ich in one of the questions in SO
Ein Just-In-Time (JIT) Compiler ist ein Merkmal der Laufzeit Interpreter, dass anstelle Bytecode ein Verfahren jedes Mal der Interpretation aufgerufen wird, wird kompilieren Sie den Bytecode in den Maschinencode Anweisungen des laufenden Geräts
Also hier wandelt JIT den Bytecode in Maschinenanweisungen um. Was nutzt JVM dann? Das können wir mit JIT machen. In meinem Wissen ist JIT nur für die Verbesserung der Leistung von JVM.
Vielen Dank im Voraus ..
Aber ich sehe Anweisung JIT compiles gesamte Klasse-Datei einmal.Aber in Ihrer Aussage jvm macht Kompilation.Bitte erläutern – Anusha
@Anusha yah ... JVM tut die Kompilierung [Zeile für Zeile] einen nativen Interpreter für Java .. aber JIT ist eine optionale, die nicht nur alles Notwendige, sondern auch notwendige Methoden/Funktionen kompiliert. Für einen Fall in Betracht ziehen: JIT-Compiler überprüft nicht Java-Randbedingungen wie Nullzeiger oder Array außerhalb der Grenzen Ausnahmen. Die einzige Möglichkeit, dass der JIT-Compiler eine Nullzeiger-Ausnahme kennt, ist ein vom Betriebssystem ausgelöstes Signal. –
Das ist einfach falsch. Der Javac-Java-Compiler analysiert den Java-Quellcode und kompiliert ihn zu Java-Bytecode (maschinenunabhängig), Ihren .class-Dateien. Der JIT-Compiler kompiliert diesen Bytecode zu nativem Maschinencode (CPU-Arch-spezifisch). Der JIT-Ausgabemaschinencode führt weiterhin eine Grenzenprüfung und eine Java-Ausnahmebehandlung durch. – arjunyg