Một câu quiz về Java mà vẫn có bạn trả lời sai

Hôm nay quiz #17 trên page có câu hay mà vẫn có bạn trả lời sai :v

4 Likes

A. Java Virtual Machine (cài mãi không được mấy cái này nên nhớ luôn tên)
B. Just in time, theo ông anh họ thì đây là một quy trình sản xuất gì đấy, không quan tâm
C. Đây là … em xin dừng cuộc chơi tại đây

@laptrinhio anh nói rõ về JIT được không? Em thấy hhvm là 1 jit compiler

Trong đó có e @!@. JAV mới đúng. hehehehe

đáp án chắc chắn phải là JAV :v

JIT tức là Just In Time compiler. Trước hết nói về Virtual Machine thì nó có thể coi như một interpreter nhưng nhận vào là bytecode. Đọc vào bytecode nào thì sẽ chuyển thành mã máy để thực thi cho từng loại CPU khác nhau.

Sử dụng bytecode có cái lợi là có thể chạy crossplatform. Nhưng cái bất lợi của nó so với compiled code thành mã máy như các ngôn ngữ C/C++ đó là tốc độ thực thi. Đối với C code, khi compile thì C code sẽ chuyển hoàn toàn thành mã máy có thể chạy được trên một loại CPU cụ thể. Mình mất công phải compile nhiều lần, nhưng compile xong chạy nhanh hơn vì nó đã chuyển thành mã máy.

Để giải quyết vấn đề thực thi code nhanh hơn mà không mất đi tính uyển chuyển của bytecode, người ta mới sinh ra JIT. Khi code được thực thi thì người ta sẽ kiểm tra xem đoạn code nào được gọi nhiều lần, gọi là “hot code” ( Thuật ngữ được gọi là Hotspot trong Java ), đoạn code đấy sẽ được compile thành mã máy luôn để thực thi cho lẹ.

Khi đó tốc độ thực thi của đoạn code đấy sẽ nhanh hơn các đoạn code còn lại. Khi đoạn code đó nó hết “hot” thì JIT sẽ hủy phần code đó đi. Khi thấy một đoạn code khác “hot” hơn thì JIT lại compile đoạn code mới. Cách hiện thực của mỗi JIT là khác nhau, ở đây Đạt chỉ giới thiệu một khái niệm chung chung mà Đạt đọc được.

9 Likes

Yeah. Cảm ơn anh. Em đã hiểu hơn về vấn đề này 1 chút. Đã hiểu vì sao trong 1 số tài liệu sử dụng hhvm thì đoạn code phải chạy từ lần thứ 2 trở đi, nó mới được tối ưu hóa

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?