JAVA CORE - Trang 27

thread.
Để quản lý Heap, bộ nhớ được theo dõi qua các danh sách sau:
Danh sách các vùng nhớ rảnh chưa cấp phát.
Danh sách các vùng đã cấp.
Khi có một yêu cầu về cấp phát bộ nhớ, hệ thống xem xét trong danh sách chưa cấp phát
để 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ớ rả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
(heap tĩnh) chứa các định nghĩa về lớp, các hằng và danh sách các phương pháp. Heap
còn lại (heap động) được chia làm hai phần được cấp phát theo hai chiều ngược nhau.
Một bên chứa đối tượng còn một bên chứa con trỏ trỏ đến đối tượng đó.

Handle” là cấu trúc bao gồm hai con trỏ. Một trỏ đến bảng phương pháp của đối tượng,

con trỏ thứ hai trỏ đến chính đối tượng đó. Chú ý rằng khi “compaction” cần cập nhật lại
giá trị con trỏ của cấu trúc “handle”.
Thuật toán dọn rác có thể áp dụng cho các đối tượng đặt trong heap động. Khi có yêu
cầu về bộ nhớ, trình quản lý heap trước tiên kiểm tra danh sách bộ nhớ chưa cấp phát.
Nếu không tìm thấy khối bộ nhớ nào phù hợp (về kích cỡ) thì trình dọn rác sẽ được kích
hoạt khi hệ thống rảnh. Nhưng khi đòi hỏi bộ nhớ cấp bách thì trình dọn rác sẽ được kích
hoạt ngay.
Trình dọn rác gọi hàm Finalize trước khi dọn dẹp đối tượng. Hàm này sẽ dọn dẹp các tài
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.4.3 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 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 bộ nhớ, hệ thống file cục bộ, mạng hoặc hệ điều hành. Quá trình
kiểm tra sẽ xem xét đến tính toàn vẹn toàn cục của lớp.
File .class bao gồm ba phần logic là:

Bytecode

Thông tin về Class như phương pháp, giao diện và các giá trị được tập hợp trong

quá trình biên dịch.

Các thuộc tính về lớp.

Các thông tin của file .class được xem xét riêng rẽ trong các bảng sau:

Bảng Field chứa các thuộc tính

Bảng Method chứa các hàm của class

Bảng Interface 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à số

thông số truyền của hàm, khả năng truy xuất sai chỉ số của mảng, chuỗi, biểu thức.

Mức thứ tư sẽ kiểm tra trong thời gian thực thi để giám sát các việc còn lại mà ba

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.