Máy ảo Java - Các cấp độ biên dịch
JVM hỗ trợ năm cấp độ biên dịch -
- Interpreter
- C1 với tối ưu hóa đầy đủ (không có cấu hình)
- C1 với lệnh gọi và bộ đếm cạnh sau (cấu hình ánh sáng)
- C1 với đầy đủ hồ sơ
- C2 (sử dụng dữ liệu cấu hình từ các bước trước)
Sử dụng -Xint nếu bạn muốn tắt tất cả các trình biên dịch JIT và chỉ sử dụng trình thông dịch.
Máy khách so với Máy chủ JIT
Sử dụng -client và -server để kích hoạt các chế độ tương ứng.
Trình biên dịch máy khách (C1) bắt đầu biên dịch mã sớm hơn trình biên dịch máy chủ (C2). Vì vậy, vào thời điểm C2 đã bắt đầu biên dịch, C1 sẽ đã biên dịch các phần mã.
Nhưng trong khi chờ đợi, C2 cấu hình mã để biết về nó nhiều hơn C1. Do đó, thời gian nó đợi nếu được bù đắp bởi các tối ưu hóa có thể được sử dụng để tạo ra một tệp nhị phân nhanh hơn nhiều. Từ quan điểm của người dùng, sự đánh đổi là giữa thời gian khởi động chương trình và thời gian chạy chương trình. Nếu thời gian khởi động là phí bảo hiểm, thì C1 nên được sử dụng. Nếu ứng dụng dự kiến sẽ chạy trong một thời gian dài (điển hình của các ứng dụng được triển khai trên máy chủ), tốt hơn nên sử dụng C2 vì nó tạo ra mã nhanh hơn nhiều, giúp giảm đáng kể thời gian khởi động thêm.
Đối với các chương trình như IDE (NetBeans, Eclipse) và các chương trình GUI khác, thời gian khởi động là rất quan trọng. NetBeans có thể mất một phút hoặc lâu hơn để bắt đầu. Hàng trăm lớp được biên dịch khi các chương trình như NetBeans được khởi động. Trong những trường hợp như vậy, trình biên dịch C1 là lựa chọn tốt nhất.
Lưu ý rằng có hai phiên bản của C1 - 32b and 64b. C2 chỉ có trong64b.
Biên dịch theo bậc
Trong các phiên bản cũ hơn trên Java, người dùng có thể đã chọn một trong các tùy chọn sau:
- Thông dịch viên (-Xint)
- C1 (-client)
- C2 (-máy chủ)
Nó có trong Java 7. Nó sử dụng trình biên dịch C1 để khởi động và khi mã trở nên nóng hơn, sẽ chuyển sang C2. Nó có thể được kích hoạt với các tùy chọn JVM sau: -XX: + TieredCompilation. Giá trị mặc định làset to false in Java 7, and to true in Java 8.
Trong số năm cấp biên dịch, sử dụng biên dịch theo cấp 1 -> 4 -> 5.