1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu máy ảo Java

22 336 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 489,11 KB
File đính kèm ChuyenDeJava.rar (2 MB)

Nội dung

Cùng với sự phát triển nhanh chóng của công nghệ, nhiều ứng dụng đã được tạo ra để phục vụ nhu cầu học tập, làm việc, giải trí của con người. Trước đây, để viết một chương trình máy tính thực sự rất khó khăn do rào cản ngôn ngữ tự nhiên và ngôn ngữ máy tính còn cách nhau rất xa. Tuy nhiên dần dần các ngôn ngữ lập trình mới ra đời, tạo điều kiện thuận lợi cho các lập trình viên có thể viết mã dễ dàng hơn. Cùng với sự phát triển của Internet, đặt ra yêu cầu một ứng dụng chỉ được viết một lần nhưng có thể được sử dụng để chạy ở nhiều nơi, nhiều hệ điều hành khác nhau, nhiều nền tảng khác nhau. Chính vì thế ngôn ngữ lập trình Java cùng với máy ảo Java ( Java Virtual Machine ) được ra đời để giải quyết vấn đề này. Trong nội dung của bài này, em sẽ trình bày những tìm hiểu của em về máy ảo Java: Cấu trúc máy ảo Java. Cấu trúc bộ nhớ máy ảo Java. Cách cấp phát bộ nhớ trong máy ảo Java.  

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN MÔN CHUYÊN ĐỀ JAVA TÌM HIỂU MÁY ẢO JAVA (JVM) Người hướng dẫn: ThS VŨ ĐÌNH HỒNG Người thực hiện: TRẦN NGỌC QUỐC PHONG – 51303365 Lớp : 13050303 Khóa : 17 THÀNH PHỐ HỒ CHÍ MINH, NĂM 2016 LỜI CẢM ƠN Em xin gửi lời cảm ơn chân thành đến ThS Vũ Đình Hồng thầy Mai Văn Mạnh, giảng viên môn Chuyên Đề Java – trường Đại học Tôn Đức Thắng, người tận tình hướng dẫn, bảo em suốt trình làm tập Em xin chân thành cảm ơn thầy cô giáo trường Đại học Tôn Đức Thắng nói chung, thầy cô Bộ môn Công Nghệ Phần Mềm nói riêng dạy dỗ cho em kiến thức môn đại cương môn chuyên ngành, giúp em có sở lý thuyết vững vàng tạo điều kiện giúp đỡ em suốt trình học tập Cuối cùng, em xin chân thành cảm ơn gia đình bạn bè, tạo điều kiện, quan tâm, giúp đỡ, động viên em suốt trình học tập hoàn thành tập Thành phố Hồ Chí Minh, ngày 01 tháng 04 năm 2016 Sinh Viên Thực Hiện Trần Ngọc Quốc Phong ĐỒ ÁN ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG Tôi xin cam đoan sản phẩm đồ án riêng / hướng dẫn ThS Vũ Đình Hồng Các nội dung nghiên cứu, kết đề tài trung thực chưa công bố hình thức trước Những số liệu bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá tác giả thu thập từ nguồn khác có ghi rõ phần tài liệu tham khảo Ngoài ra, đồ án sử dụng số nhận xét, đánh số liệu tác giả khác, quan tổ chức khác có trích dẫn thích nguồn gốc Nếu phát có gian lận xin hoàn toàn chịu trách nhiệm nội dung đồ án Trường đại học Tôn Đức Thắng không liên quan đến vi phạm tác quyền, quyền gây trình thực (nếu có) TP Hồ Chí Minh, ngày 01 tháng 04 năm 2016 Tác giả (ký tên ghi rõ họ tên) Trần Ngọc Quốc Phong PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN Phần xác nhận GV hướng dẫn _ _ _ _ _ _ _ Tp Hồ Chí Minh, ngày tháng năm (kí ghi họ tên) Phần đánh giá GV chấm _ _ _ _ _ _ _ Tp Hồ Chí Minh, ngày tháng năm (kí ghi họ tên) TÓM TẮT Cùng với phát triển nhanh chóng công nghệ, nhiều ứng dụng tạo để phục vụ nhu cầu học tập, làm việc, giải trí người Trước đây, để viết chương trình máy tính thực khó khăn rào cản ngôn ngữ tự nhiên ngôn ngữ máy tính cách xa Tuy nhiên ngôn ngữ lập trình đời, tạo điều kiện thuận lợi cho lập trình viên viết mã dễ dàng Cùng với phát triển Internet, đặt yêu cầu ứng dụng viết lần sử dụng để chạy nhiều nơi, nhiều hệ điều hành khác nhau, nhiều tảng khác Chính ngôn ngữ lập trình Java với máy ảo Java ( Java Virtual Machine ) đời để giải vấn đề Trong nội dung này, em trình bày tìm hiểu em máy ảo Java: - Cấu trúc máy ảo Java - Cấu trúc nhớ máy ảo Java - Cách cấp phát nhớ máy ảo Java Mục lục CHƯƠNG 1: MÁY ẢO Java (Java Virtual Machine) 1.1 Tổng quan JVM 1.1.1 Giới thiệu JVM Thập kỷ 90 chứng kiến phát triển vũ bão mạng Internet, kèm theo ứng dụng môi trường, hệ điều hành (OS) vi xử lý (CPU) khác Tuy nhiên có điểm hạn chế lớn người lập trình phải vất vả chuyển đổi ứng dụng để hệ thống khác sử dụng Ngày 23/5/1995, công ty máy tính Sun Microsystems giới thiệu công cụ lập trình - ngôn ngữ Java - nhằm khắc phục khó khăn Đặc điểm bật Java không phụ thuộc vào hệ điều hành xử lý Điều cho phép ứng dụng viết Java thực hệ điều hành hệ xử lý có hỗ trợ Java Do vậy, người lập trình cần viết ứng dụng Java lần, sau sử dụng ứng dụng hệ điều hành khác Windows95, WindowsNT, Mac OS, Unix, theo phương châm: viết lần, sử dụng đâu Có thể định nghĩa cách xác Java: ngôn ngữ lập trình hướng đối tượng, thiết kế độc lập với hệ điều hành, cho phép người lập trình viết chương trình lần sử dụng đâu Không giới thiệu ngôn ngữ lập trình, Sun Microsystems đưa hàng loạt công cụ hỗ trợ người lập trình phát triển ứng dụng Java, Java Develoment Kit, JavaBeans, HotJava Ngôn ngữ Java có cú pháp giống với ngôn ngữ C/C++ (là ngôn ngữ mạnh dùng phổ biến nay), nhiên thay đổi nhiều để đáp ứng khả độc lập với hệ điều hành Nền tảng ngôn ngữ Java class Các class đóng vai trò đối tượng, người lập trình xây dựng ứng dụng sử dụng số class chuẩn hệ thống, đồng thời tự xây dựng class khác đáp ứng yêu cầu công việc Java ngôn ngữ dễ học, lược bớt lệnh thừa rườm rà C/C++ để người lập trình trọng vào việc viết chương trình Đồng thời, hạn chế người lập trình không can thiệp sâu vào hệ thống Hiện Java ứng dụng rộng rãi, chủ yếu ứng dụng viết Internet nhằm khai thác tối đa khả lĩnh vực viễn thông, truyền hình, mạng, máy tính đơn lẻ Hiện ứng dụng viết Java thực chậm so với ứng dụng xây dựng thông thường, nhiên hầu hết nhà phát triển phần mềm cho tốc độ cải thiện Java ngôn ngữ lập trình tương lai Máy ảo Java trái tim ngôn ngữ Java Môi trường Java bao gồm năm phần tử sau: − Ngôn ngữ − Định nghĩa Bytecode − Các thư viện lớp Java/Sun − Máy ảo Java (JVM) − Cấu trúc file class Giá trị cốt lõi của JRE là: − Định nghĩa Bytecode − Cấu trúc file class − Máy ảo Java Java Virtual Machine (JVM) đóng vai trò quan trọng để ứng dụng Java thực Nó hoạt động máy tính ảo, có lệnh, cấu trúc liệu, nhớ, Khi ứng dụng Java (sau dịch, ứng dụng viết Java có phần mở rộng class) thực hiện, JVM tiến hành phân tích mã class thành lệnh JVM thực giống máy tính PC thao tác với ứng dụng thông thường Khả động file class cho phép chương trình Java viết lần chạy đâu Bởi vậy, class sau dịch thực hệ điều hành thông qua máy tính ảo JVM Khả có nhờ giúp đỡ JVM Hiện tại, JVM xây dựng cho hầu hết hệ điều hành hệ xử lý có, điều có nghĩa ứng dụng viết Java có đầy đủ điều kiện để phát triển 1.1.2 Máy ảo Java gì? Như biết, JVM chất chương trình thực thi đoạn mã lập trình Java, đặc điểm chương trình viết Java chạy môi trường nào, miễn có cài máy ảo JVM Việc tạo động lực lớn thúc đẩy việc dùng lại phần mềm Java viết trước việc phát triển phần mềm iPhone iTouch Máy ảo phần mềm dựa sở máy tính ảo Nó có tập hợp lệnh logic để xác định hoạt động máy tính Người ta xem hệ điều hành thu nhỏ Nó thiết lập lớp trừu tượng cho: Phần cứng bên dưới,hệ điều hành, mã biên dịch Trình biên dịch chuyển mã nguồn thành tập lệnh máy ảo mà không phụ thuộc vào phần cứng cụ thể Trình thông dịch máy chuyển tập lệnh thành chương trình thực thi Máy ảo tạo môi trường bên để thực thi lệnh cách: − Nạp file class − Quản lý nhớ − Dọn rác Việc không quán phần cứng làm cho máy ảo phải sử dụng ngăn xếp để lưu trữ thông tin sau: − Các “Frame” chứa trạng thái phương pháp − Các toán hạng mã bytecode − Các tham số truyền cho phương pháp − Các biến cục Khi JVM thực thi mã, ghi cục có tên "Program Counter" sủ dụng Thanh ghi trỏ tới lệnh thực Khi cần thiết, thay đổi nội dung ghi để đổi hướng thực thi chương trình Trong trường hợp thông thường lệnh nối tiếp thực thi Một khái niệm thông dụng khác Java trình biên dịch "Just In TimeJIT" Các trình duyệt thông dụng Netscape hay IE có JIT bên để tăng tốc độ thực thi chương trình Java Mục đích JIT chuyển tập lệnh bytecode thành mã máy cụ thể cho loại CPU Các lệnh lưu trữ sử dụng gọi đến 1.2 Cấu trúc Máy ảo Java Cấu trúc máy ảo Java bao gồm thành phần: Classloader: Là hệ thống JVM sử dụng để tải class file Runtime Data Area Java bao gồm: Class (method) Area: Lưu trữ cấu trúc lớp, chẳng hạn hằng, trường, liệu phương thức, code phương thức, … Heap: Nó khu vực liệu runtime mà đối tượng cấp phát Stack: Stack Java lưu giữ Frame Nó giữ biến cục kết cục bộ, thực phần nhiệm vụ phần triệu hồi trả phương thức Mỗi Thread có Stack riêng, tạo thời điểm với Thread Một Frame tạo phương thức triệu hồi bị hủy lời triệu hồi phương thức kết thúc Program Counter Register: Nó chứa địa lệnh JVM thực thi Native Method Stack: Bao gồm tất phương thức tự nhiện sử dụng ứng dụng Execution Engine: Phần bao gồm: Một xử lý ảo Virtual Processor Một trình thông dịch Interpreter Đọc Bytecode Stream sau thực thi thị Just-In-Time (JIT) Compiler: sử dụng để cải thiện hiệu suất JIT biên dịch phần Bytecode mà có tính thời điểm, giảm lượng thời gian cần thiết để biên dịch Ở khái niệm Compiler biên dịch tập thị JVM thành tập thị CPU cụ thể 1.3 Bộ nhớ JVM 1.3.1 Cấu trúc nhớ JVM Khi thực cấp phát nhớ, đối tượng tạo đặt vào vùng nhớ Heap Khi ứng dụng bạn không tham chiếu tới đối tượng Java garbage collector cho phép xóa đối tượng để sử dụng lại vùng nhớ Heap: JVM lưu tất đối tượng tạo toán tử “new” ứng dụng Java, vào vùng nhớ Heap thời điểm chạy Stack: Các phương thức tham chiếu tới đối tượng địa phương lưu trữ Stack Mỗi Thread quản lý stack Khi phương thức gọi, đưa vào đỉnh Stack Stack lưu trữ trạng thái phương thức bao gồm: dòng code thực thi, tham chiếu tới đối tượng địa phương Khi phương thức chạy xong, vùng nhớ (dòng code thực thi, tham chiếu tới đối tượng địa phương) đẩy khỏi stack tự động giải phóng Perm: Lưu trữ thông tin Class nạp vào vài tính khác StringPool (vùng nhớ biến String) thường tạo phương thức String.interm() Khi ứng dụng bạn chạy, Perm space lấp đầy nhanh chóng Ví dụ: Dog dog = new Dog(); Heap: lưu đối tượng Dog ta “new Dog ();” Stack: lưu tham chiếu “dog” Perm: lưu thông tin Class “Dog” 1.3.2 Quá trình cấp phát nhớ JVM thực tế Trong viết này, sử dụng phần mềm VMVisual kết nối tới máy ảo Java để mô hình hóa trình chạy JVM Sử dụng đoạn code debug để lấy Heap dump trường hợp: − Không thực kiểu liệu hay đối tượng Java để chạy chương trình, thực lệnh dừng (sleep) 100s để có thời gian Heap dump (1) − Hiện thựcpublic đối tượng ArrayList class Mainvới{ 1000 đối tượng chứa mảng, thực lệnh dừngpublic 100 giây static để có thờivoid gian Heap dump (2) main(String[] args){ sleep(100000); Sau tiến hành Heap Dump, ta nhận kết sau: } tổng thể: Cấp phát nhớ public class Main { public static void main(String[] args) throws InterruptedException { ArrayList arrayList = new ArrayList(1000); sleep(100000); } Bộ nhớ cấp phát cho chương trình (1) Bộ nhớ cấp phát cho chương trình (2) Dung lượng nhớ cấp phát cho chương trình (2) cao chương trình (1) cho dù số lớp (465 class) JVM cấp phát nhớ theo class, dù không thực nhiều phương thức, không cấp phát cho đối tượng nữa, bước tiền xử lý, tiền thực thi có cấp phát nhớ JVM Tất class Java kế thừa từ class java.lang.Object nên dù không thực thi nhiều lệnh bên lớp Object có nhiều lệnh tiền xử lý, có nhiều vùng nhớ cấp phát sẵn Cấp phát nhớ theo Class: Cấp phát nhớ theo lớp chương trình (1) Cấp phát nhớ theo lớp chương trình (2) Ở ta thấy với đoạn chương trình đơn giản máy ảo Java tiến hành cấp phát nhiều nhớ cho lớp mà đoạn mã người lập trình Tuy nhiên, việc làm tăng hiệu suất JIT Compiler đề cập phần Cấp phát nhớ lớp ArrayList: (1) (2) Ngoài đối tượng Instance trước (2) có thêm đối tượng với kích thước lớn hẳn, đối đượng tạo 1000 phần tử (nhưng chưa sử dụng) Chi tiết nhớ cấp phát cho đối tượng arrayList chương trình (2) CHƯƠNG 2: PHƯƠNG PHÁP THỰC THI 2.1 Quản lý nhớ dọn rác (Garbage Collection) Trong C, C++ hay Pascal người lập trình sử dụng phương pháp nguyên thủy để cấp phát thu hồi nhớ vùng “Heap” Heap vùng nhớ lớn phân chia cho tất Thread Để quản lý Heap, nhớ theo dõi qua danh sách sau: − Danh sách vùng nhớ rảnh chưa cấp phát − Danh sách vùng cấp Khi có yêu cầu cấp phát nhớ, hệ thống kiểm tra xem xét danh sách chưa cấp phát để lấy khối nhớ có kích cỡ sát Chiến thuật cấp phát giảm tối thiểu việc phân mảnh Heap “Coalescing” kỹ thuật khác giảm thiểu việc phân mảnh Heap cách gom lại vùng nhớ chưa dùng liền Còn kỹ thuật xếp lại phần dùng để tạo vùng nhớ lớn gọi “Compaction” Java sử dụng hai Heap riêng biệt cho cấp phát vùng nhớ tĩnh vùng nhớ động Một Heap (Heap tĩnh) chứa định nghĩa lớp, danh sách phương pháp Heap lại (Heap động) chia làm hai phần cấp phát theo hai chiều ngược Một bên chứa đối tượng bên chứa trỏ trỏ đến đối tượng “Handle” cấu trúc bao gồm hai trỏ Một trỏ đến bảng phương pháp đối tượng, trỏ thứ hai trỏ đến đối tượng Chú ý “compaction” cần cập nhập lại giá trị trỏ cấu trúc “Handle” Thuật toán dọn rác áp dụng cho đối tượng đặt Heap động Khi có yêu cầu nhớ, trình quản lý Heap trước tiên kiểm tra danh sách nhớ chưa cấp phát Nếu không tìm thấy khối nhớ phù hợp (về kích cỡ) trình dọn rác kịch hoạt hệ thống rảnh Nhưng đòi hỏi nhớ cấp bách trình dọn rác kích hoạt Trình dọn rác gọi hàm Finalize trước dọn dẹp đối tượng Hàm dọn dẹp tài nguyên bên file mở Công việc không trình dọn rác thực thi 2.2 Quá Trình kiểm tra file class Việc kiểm tra áp dụng cho tất file class nạp lên nhớ để đảm bảo tính an toàn Trình “Class Loader” kiểm tra tất file class không phụ thuộc hệ điều hành với mục đích giám sát tuân thủ nghi thức để phát file class có nguy gây hư hỏng đến nhớ, hệ thống file cục bộ, mạng hệ điều hành Quá trình kiểm tra xem xét đến tính toàn vẹn toàn cục lớp File class bao gồm ba phần logic là: − Byecode − Thông tin Class method, interface giá trị tập hợp trình biên dịch − Các thuộc tính lớp Các thông tin file class xem xét riêng rẽ bảng sau: − Bảng file chứa thuộc tính − Bảng Method chứa hàm class − Bảng Interface chứa giao diện số Quá trình kiểm tra file class thực bốn mức: • Mức thực việc kiểm tra cú pháp để đảm bảo tính cấu trúc tính toàn vẹn cú pháp file class nạp • Mức thứ hai xem xét file.class để đảm bảo file không vi phạm nguyên tắc quán ngữ nghĩa • Mức thứ ba kiểm tra bytecode Trong bước thông tin so sánh số thông số truyền hàm, khả truy xuất sai số mảng, chuỗi, biểu thức • Mức thứ tư kiểm tra thời gian thực thi để giám sát việc lại mà ba bước chưa làm Ví dụ liên kết tới lớp khác thực thi, hay kiểm tra quyền truy xuất Nếu điều thỏa mãn, lớp khởi tạo CHƯƠNG 3: CÁC KIỂU DỮ LIỆU HỖ TRỢ TRONG JVM Trong JVM hỗ trợ loại kiểu liệu, là: • Kiểu liệu nguyên thủy (primitive) • Kiểu liệu tham chiếu (references) 3.1 Kiểu liệu nguyên thủy Các kiểu liệu nguyên thủy mà JVM hỗ trợ bao gồm: Các kiểu số (numeric types), kiểu logic (boolean type), kiểu địa trả (returnAddress type) Kiểu số bao gồm kiểu số nguyên kiểu số phẩy động Kiểu số nguyên gồm byte (gồm bit) short (gồm 16 bit) int (gồm 32 bit) long (gồm 64 bit) char (gồm 16 bit) Kiểu số phẩy động bao gồm • Float • Double Kiểu logic (boolean type) bao gồm giá trị Đúng (True) Sai (False) Kiểu địa trả loại trỏ lệnh JVM, sử dụng để trỏ tới lệnh chương trình Java thay đổi chạy chương trình Bảng mô tả kiểu liệu nguyên thủy sau Kiểu liệu Byte Độ dài theo số bít Phạm vi giá trị Mô tả -128 đến +127 Số liệu kiểu byte loại điển hình dùng để lưu trữ Short 16 Int 32 Long 64 Char 16 giá trị byte Chúng sử dụng rộng rãi xử lý file văn -32768 đến +32767 Kiểu Short thường dùng để lưu số có giá trị nhỏ 32767 -2147483648 đến Kiểu Int thường dùng để +2147483648 lưu số có giá trị lớn đến 2147483648 -9223372036854775808 đến Kiểu Long thường sử +9223372036854775808 dụng để lưu số có giá trị lớn đến 65355 Kiểu char sử dụng để lưu tên liệu ký tự "True" "False" Kiểu Boolean thường dùng để lưu giá trị sai -340292347E+38 đến Kiểu Float thường dùng để +340292347E+38 lưu số thập phân đến 340292347E+38 -179769313486231570E+308 Kiểu Double thường dùng để đến lưu số thập phân có giá trị +179769313486231570E+308 lớn đến +179769313486231570E+308 Boolean Float 32 Double 64 3.2 Kiểu liệu tham chiếu JVM hỗ trợ kiểu liệu tham chiếu : Mảng (array types), Lớp(class types) Giao diện(interface types) Bảng mô tả kiểu liệu tham chiếu sau Kiểu liệu Mảng (array types) Lớp(class types) Giao diện(interface types) Mô tả Tập hợp liệu loại: Ví dụ Tên sinh viên Tập hợp biến phương thức Ví dụ: Lớp"Sinh Viên" chứa toàn chi tiết sinh viên phương thức thực thi chi tiết Là lớp trừu tượng tạo để bổ sung cho kế thừa đa lớp Java TÀI LIỆU THAM KHẢO Java core complete – ICIDREC Giới thiệu máy ảo Java - JavaDevChannel [...]... khái niệm thông dụng khác trong Java là trình biên dịch "Just In TimeJIT" Các trình duyệt thông dụng như Netscape hay IE đều có JIT bên trong để tăng tốc độ thực thi chương trình Java Mục đích chính của JIT là chuyển tập lệnh bytecode thành mã máy cụ thể cho từng loại CPU Các lệnh này sẽ được lưu trữ và sử dụng mỗi khi gọi đến 1.2 Cấu trúc Máy ảo Java Cấu trúc một máy ảo Java bao gồm các thành phần: Classloader:... toàn bộ các chi tiết của một sinh viên và các phương thức thực thi trên các chi tiết đó Là một lớp trừu tượng được tạo ra để bổ sung cho các kế thừa đa lớp trong Java TÀI LIỆU THAM KHẢO 1 Java core complete – ICIDREC 2 Giới thiệu máy ảo Java - JavaDevChannel ... class trong Java đều được kế thừa từ class java. lang.Object nên dù không thực thi nhiều lệnh nhưng bên trong lớp Object đã có nhiều lệnh tiền xử lý, chính vì thế đã có nhiều vùng bộ nhớ được cấp phát sẵn Cấp phát bộ nhớ theo Class: Cấp phát bộ nhớ theo lớp trong chương trình (1) Cấp phát bộ nhớ theo lớp trong chương trình (2) Ở đây ta chỉ thấy với một đoạn chương trình đơn giản nhưng máy ảo Java đã tiến... “Dog” 1.3.2 Quá trình cấp phát bộ nhớ JVM trong thực tế Trong bài viết này, sử dụng phần mềm VMVisual kết nối tới máy ảo Java để mô hình hóa quá trình chạy của JVM Sử dụng một đoạn code debug để lấy Heap dump ở 2 trường hợp: − Không hiện thực bất cứ kiểu dữ liệu hay đối tượng nào trong Java để chạy chương trình, thực hiện lệnh dừng (sleep) trong 100s để có thời gian Heap dump (1) − Hiện thựcpublic... lấy ra khối bộ nhớ đầu tiên có kích cỡ sát nhất Chiến thuật cấp phát này giảm tối thiểu việc phân mảnh của Heap “Coalescing” là kỹ thuật khác cũng giảm thiểu việc phân mảnh của Heap bằng cách gom lại các vùng nhớ chưa dùng liền nhau Còn kỹ thuật sắp xếp lại các phần đã dùng để tạo vùng nhớ lớn hơn gọi là “Compaction” Java sử dụng hai Heap riêng biệt cho cấp phát vùng nhớ tĩnh và vùng nhớ động Một Heap... Classloader: Là một hệ thống con của JVM được sử dụng để tải class file Runtime Data Area Java bao gồm: Class (method) Area: Lưu trữ cấu trúc mỗi lớp, chẳng hạn như hằng, trường, dữ liệu phương thức, code của phương thức, … Heap: Nó là khu vực dữ liệu runtime mà trong đó đối tượng được cấp phát Stack: Stack trong Java lưu giữ các Frame Nó giữ các biến cục bộ và các kết quả cục bộ, và thực hiện một phần... chứa các giao diện và các hằng số Quá trình kiểm tra file class được thực hiện ở bốn mức: • Mức đầu tiên thực hiện việc kiểm tra cú pháp để đảm bảo tính cấu trúc và tính toàn vẹn cú pháp của file class được nạp • Mức thứ hai sẽ xem xét file.class để đảm bảo các file này không vi phạm các nguyên tắc về sự nhất quán ngữ nghĩa • Mức thứ ba sẽ kiểm tra bytecode Trong bước này các thông tin so sánh sẽ là... nhớ, một đối tượng mới được tạo và đặt vào vùng nhớ Heap Khi ứng dụng của bạn không còn tham chiếu tới đối tượng này nữa thì Java garbage collector cho phép xóa đối tượng này đi để sử dụng lại vùng nhớ đó Heap: JVM lưu tất cả đối tượng được tạo bởi toán tử “new” trong ứng dụng Java, vào vùng nhớ Heap tại thời điểm chạy Stack: Các phương thức và tham chiếu tới đối tượng địa phương được lưu trữ trong... nguyên bên ngoài như các file đang mở Công việc này không được trình dọn rác thực thi 2.2 Quá Trình kiểm tra file class Việc kiểm tra được áp dụng cho tất cả các file class sắp được nạp lên bộ nhớ để đảm bảo tính an toàn Trình “Class Loader” sẽ kiểm tra tất cả các file class không phụ thuộc hệ điều hành với mục đích giám sát sự tuân thủ các nghi thức để phát hiện các file class có nguy cơ gây hư hỏng đến... Register: Nó chứa địa chỉ của chỉ lệnh JVM hiện tại đang được thực thi Native Method Stack: Bao gồm tất cả các phương thức tự nhiện được sử dụng trong ứng dụng Execution Engine: Phần này bao gồm: Một bộ xử lý ảo Virtual Processor Một trình thông dịch Interpreter Đọc Bytecode Stream sau đó thực thi các chỉ thị Just-In-Time (JIT) Compiler: được sử dụng để cải thiện hiệu suất JIT biên dịch các phần của Bytecode

Ngày đăng: 17/05/2016, 21:22

TỪ KHÓA LIÊN QUAN

w