Tôi đang thực sự gặp khó khăn để hiểu những điều sau đâyviệc sử dụng các JVM là gì nếu JIT là thực hiện bytecode chuyển đổi thành các lệnh máy
Trước đây tôi biết:
Khi một chương trình Java được biên dịch .class
tập tin sẽ được tạo . Trong mã đó là ở dạng byte. Sau đó, JVM
sẽ dịch mã byte đó thành định dạng máy có thể hiểu được.
Bây giờ tôi nhìn thấy trong one of the questions in SO
Một Just-In-Time (JIT) biên dịch là một tính năng của dịch thời gian chạy , thay vì giải thích bytecode mỗi khi một phương pháp được gọi, sẽ biên dịch bytecode vào mã máy hướng dẫn của máy chạy
Vì vậy, tại đây JIT đang chuyển đổi bytecode thành hướng dẫn máy. Sau đó, việc sử dụng JVM là gì. Chúng tôi có thể làm điều này với JIT. Trong kiến thức của tôi JIT là chỉ cải thiện hiệu suất của JVM.
Thanks in advance ..
Nhưng tôi thấy câu lệnh JIT biên dịch toàn bộ tệp lớp một lần.Nhưng trong câu lệnh jvm đang thực hiện biên dịch.Xin giải thích – Anusha
@Anusha yah ... JVM thực hiện phần biên dịch [từng dòng] một trình thông dịch gốc cho java..but JIT là một tùy chọn, nó cũng biên dịch, không phải mọi thứ chỉ là một phương thức/chức năng cần thiết. Đối với trường hợp xem xét: Trình biên dịch JIT không kiểm tra các điều kiện biên Java như con trỏ Null hoặc mảng ngoài giới hạn ngoại lệ. Cách duy nhất trình biên dịch JIT biết nó có một ngoại lệ con trỏ null là bởi một tín hiệu được nâng lên bởi hệ điều hành. –
Điều này chỉ là sai. Trình biên dịch Java javac phân tích cú pháp mã nguồn Java và biên dịch nó sang mã Java bytecode (máy độc lập), các tệp .class của bạn. Trình biên dịch JIT biên dịch bytecode thành mã máy riêng (đặc trưng cho CPU). Mã máy đầu ra JIT vẫn thực hiện kiểm tra giới hạn và xử lý ngoại lệ Java. – arjunyg