Jun 26, 2018

[JAVA] Kiến trúc Java Memory Model (JVM) - GC Quá trình dọn rác





Khi một object được khởi tạo, nó sẽ được quản lý tại một trong 3 vùng của JVM.

  • Vùng Young Gen
Chia làm 3 vùng nhỏ: Eden, S0, S1
Đầu tiên, object tạo mới được nhét vào Eden. Minor GC hoạt động khi số lượng obj đầy hết vùng Eden – Nó sẽ xóa các obj không cần thiết và không còn hoạt động. Các obj còn hoạt động sẽ được đưa vào 2 vùng S01, S02. Sau n lần Minor GC (n là chỉ số MaxTenuringThreshold , default: 32) mà obj vẫn còn hoạt động thì nó sẽ được chuyển đến vùng Old.

  • Vùng Old Gen
Vùng này chứa những obj còn sống và được Major GC quản lý. Cũng giống như Minor GC thì Major hoạt động khi Old Gen đầy.

  •  Vùng Perm
Vùng này chứa các thông tin meta như thông số về class, method, thư viện SE… Nó không chưa obj . Vùng này không nằm trong Heap.

  • Tuning một số thông số.

-Xms
Giá trị size khởi đầu của toàn bộ Heap
-Xmx
Giá trị size max của toàn bộ Heap
-XX:NewSize
Giá trị size ban đầu của vùng New của Heap
-XX:MaxNewSize
Giá trị size Max của vùng New của Heap
-XX:PermSize
Giá trị size ban đầu của vùng Permanent
-XX:MaxPermSize
Giá trị size Max của vùng Permanent
-XX:NewRatio
Tỉ lệ phân chia bộ nhớ giữa vùng New và Old
-XX:SurvivorRatio
Tỉ lễ phân chia bộ nhỡ giữa vùng [Eden] và [From/To] trong New

Còn tiếp …
Tham khảo:

No comments:

Post a Comment