Ngày 1: Tối ưu hóa Garbage Collection trong Java.
Garbage Collection (GC) là một hạng mục rất quan trọng, dù nó chủ yếu ẩn giấu với lập trình viên. GC là quy trình mà JVM sẽ đánh dấu và giải phóng bộ nhớ mà không còn được sử dụng. Điều này giúp chống lại việc hết bộ nhớ. Đôi khi, nếu GC không được tối ưu, nó có thể gây ra sự gián đoạn trong ứng dụng Java của bạn khiến nó ngừng hoạt động để thực hiện công việc GC.
Ví dụ: G1 (Garbage-First) Collector – Có thể sử dụng với các hệ thống có bộ nhớ lớn. G1 chia bộ nhớ thành các vùng nhỏ hơn và xử lý GC trên từng vùng. Điều này giúp giảm thời gian dừng GC.
Đặc biệt: Đối với các ứng dụng có khối lượng bộ nhớ lớn và yêu cầu thời gian dừng GC nhỏ, chúng ta nên dùng G1 GC.
5 Câu hỏi ôn tập:
1. GC ( Garbage Collection ) là gì trong Java?
Trả lời: GC là quá trình ngầm tiếp thu và giải phóng bộ nhớ không còn sử dụng của trình thông dịch ngôn ngữ Java để tránh trường hợp hết bộ nhớ.
2. Những dấu hiệu nào cho thấy GC không được tối ưu?
Trả lời: Các dấu hiệu chính bao gồm: ứng dụng bị gián đoạn thường xuyên do thực hiện quy trình Garbage Collection, tiền trình GC sử dụng nhiều CPU hơn bình thường, bộ nhớ heap không được giải phóng sau mỗi lần GC.
3. Việc tối ưu GC có thể giúp ích gì?
Trả lời: Giúp giảm tải cho CPU, giảm thời gian gián đoạn ứng dụng và tối đa hóa hiệu suất hoạt động của chương trình.
4. G1 Collector là gì và khi nào nên dùng?
Trả lời: G1 Collector là một thuật toán thu gom rác, chia bộ nhớ thành những phần nhỏ và thực hiện GC trên từng phần. Chúng nên được dùng cho các ứng dụng có bộ nhớ lớn và yêu cầu thời gian dừng GC nhỏ.
5. Có những Collector nào khác bạn biết?
Trả lời: Bên cạnh G1 Collector, chúng ta còn có Serial Collector, Parallel Collector và CMS (Concurrent Mark Sweep) Collector.