#

JVM (Java Virtual Machine) là gì? Ứng dụng của máy ảo Java

 14/09/2022 - 14:00 Trịnh Duy Thanh

Một trong những yếu tố quan trọng nhất của ngôn ngữ lập trình Java đó là Java Virtual Machine (JVM). Phần mềm này được cài đặt trên các thiết bị cục bộ và chạy được ở nhiều hệ điều hành khác nhau. Để hiểu rõ hơn về khái niệm JVM cũng như kiến trúc, lợi ích của nó bạn hãy cùng BKHOST tham khảo bài viết dưới đây.

Java Virtual Machine (JVM) là gì?

Java Virtual Machine (JVM) la gi

Java Virtual Machine (JVM) hay còn gọi là máy ảo Java – một chương trình thông dịch bytecode của Java thành mã máy tương ứng với từng hệ điều hành và phần cứng khác nhau bằng cách cung cấp một môi trường để thực thi quá trình này.

Mua domain và hosting tại BKHOST

BKHOST là một trong những nhà cung cấp dịch vụ domain và hosting uy tín nhất tại Việt Nam.

Rất nhiều chương trình khuyến mãi hấp dẫn đang chờ bạn. Đăng ký ngay hôm nay:

mua hosting và tên miền

Một trong những điểm mạnh mà Java sở hữu đó là chạy được trên nhiều nền tảng như Window, Linux, IOS…Sở dĩ Java làm được điều đó là do nó được hỗ trợ JVM trên nhiều nền tảng. Với những tính năng nổi bật, JVM là một trong những công cụ được các nhà phát triển tập đoàn Java và cộng đồng nguồn mở sử dụng phổ biến.

JVM được sử dụng để làm gì?

Ngoài cung cấp phương tiện để ngôn ngữ lập trình Java có thể chạy ở bất cứ môi trường nào thì JVM còn có khả năng duy trì và tối ưu hóa bộ nhớ chương trình. Java ra đời với triết lý “viết một lần, chạy mọi nơi” là một sự đột phá làm thay đổi toàn cảnh phát triển chương trình. Nếu trước đây các chương trình chỉ chạy trên một nền tảng cụ thể thì code java tương thích với hầu hết các hệ điều hành, nhiều nền tảng khác nhau.

Khi nhắc tới JVM người dùng sẽ thường có hai cách hiểu về nó. Cách hiểu thứ nhất xem JVM là một chương trình phần mềm cung cấp môi trường để code java được thực thi. Cách hiểu thứ hai đó là JVM sử dụng các cài đặt cấu hình để kiểm soát và quản lý tài nguyên cho java trong quá trình thực thi.

Memory và Garbage Collection

Kiến trúc của JVM ở module “Run time area” có hai vùng nhớ là “stack và heap”. Để hiệu suất hoạt động tốt đòi hỏi JVM phải thường xuyên dọn dẹp memory (bộ nhớ). Một điều đặc biệt là memory của JVM lại được quản lý bởi garbage collection (bộ thu gom rác), điều này khác hẳn với phương pháp được sử dụng với các ngôn ngữ trước đó.

Garbage collection được diễn ra liên tục nhằm tìm memory dư thừa, không sử dụng để loại bỏ, tập trung ở vùng nhớ heap. Quá trình này diễn ra tự động bên trong JVM thay vì trong chương trình.

Java không phải là “Close to the metal”

Nếu các ngôn ngữ trước đây như C, C ++ và ngôn ngữ lập trình khác được xem là “close to the metal” (gần giống với kim loại) tức là chúng hoạt động nhanh, mạnh mẽ. Mặt khác các ngôn ngữ đó có thể trực tiếp quản lý bộ nhớ của chương trình, riêng với code Java lại không thể thực hiện việc đó.

Như vậy có thể thấy khi Java ra đời, nó ủy quyền quản lý bộ nhớ cho JVM nên hạn chế các thao tác của lập trình viên, vì thế Java chạy chậm hơn các ngôn ngữ khác. Rất nhiều người chỉ trích nó không phải là “close to the metal” ( ẩn ý cho khả năng quản lý bộ nhớ của lập trình viên). Thế nhưng qua nhiều năm phát triển, Java đã đạt được nhiều tiến bộ đáng kể trong việc cải thiện công cụ Garbage Collection.

Kiến trúc JVM

Tương tự như những ngôn ngữ lập trình khác, Java cũng được cấu tạo từ nhiều bộ phận khác nhau. Dưới đây là kiến trúc cơ bản ảnh hưởng tới cách thức mà Java hoạt động:

  • Classloader là một hệ thống phụ của JVM có chức năng tìm kiếm và tải các file class.
  • Method Area là nơi lưu trữ các cấu trúc lớp với các type khác nhau để chạy một chương trình Java.
  • Heap là bộ nhớ lưu trữ Object, các biến đối tượng liên quan và mảng (Array).
  • JVM language Stacks được tạo ra để lưu trữ các biến cục bộ và một phần kết quả từ nó. Mỗi luồng sẽ có JVM stacks riêng và chúng được tạo ra cùng thời điểm với luồng.
  • PC register chứa địa chỉ của các JVM đang thực thi lệnh. Với ngôn ngữ Java mỗi luồng sẽ có PC register của riêng nó.
  • Native Method Stack bằng cách sử dụng thư viện gốc nó đã lưu trữ các lệnh của code gốc được viết bằng những ngôn ngữ khác ngoài Java.
  • Execution Engine được xem là một loại phần mềm để kiểm tra phần cứng, phần mềm hoặc cả một hệ thống hoàn chỉnh. Execution Engine không giữ lại bất cứ thông tin nào về đối tượng được kiểm tra.
  • Native Method interface là một framework cho phép code Java chạy trong máy ảo Java (JVM).
  • Native Methods Libraries là một tập hợp các thư viện riêng như C, C ++ để phục vụ cho Execution Engine (công cụ thực thi).

Lỗi JVM

Loi JVM

Máy tính sẽ không thể đọc và hiểu code Java khi xuất hiện lỗi JVM. Một trong những lỗi thường gặp nhất là sự cố ở trình khởi chạy JVM do các thành phần bắt buộc không có sẵn. Ví dụ như khi bắt đầu khởi động có một lớp bắt buộc nào đó không xuất hiện thì JVM sẽ lập tức báo lỗi để cảnh báo tới người dùng. Hình ảnh dưới đây minh họa cho lỗi này.

Tổng kết về JVM

Trên đây là những thông tin cụ thể về Java Virtual Machine (JVM). Hy vọng với kiến thức tham khảo được bạn sẽ có cái nhìn toàn diện về chương trình này và ứng dụng nó hiệu quả trong lập trình.

Nếu bạn có thắc mắc về Java Virtual Machine (JVM) hay muốn tìm hiểu thêm về những kiến thức liên quan đến máy ảo, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.


  • java virtual machine
  • may ao java
  • jvm là gì
  • java vm

Đăng ký dịch vụ Email Sever chỉ từ 15k/tháng

BKHOST đang có chương trình khuyến mãi cực tốt dành cho khách hàng đăng ký dịch Email Server:

  • Giảm giá lên đến 30%.
  • Chỉ từ 15k/tháng.

Đăng ký ngay:

thuê mail server

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger
Góp ý cho chúng tôi