7.1* Cách chọn bộ thu gom rác phù hợp

Nếu ứng dụng của bạn không có các yêu cầu nghiêm ngặt về độ trễ, bạn chỉ cần chạy ứng dụng và để JVM tự chọn trình thu thập phù hợp.

Trong hầu hết các trường hợp, cài đặt mặc định hoạt động tốt. Nếu cần, bạn có thể điều chỉnh kích thước heap để cải thiện hiệu suất. Nếu hiệu suất vẫn không như mong đợi, hãy thử sửa đổi trình thu thập cho phù hợp với yêu cầu ứng dụng của bạn.

  • Tuần tự . Nếu ứng dụng có tập dữ liệu nhỏ (tối đa khoảng 100 MB) và/hoặc ứng dụng sẽ chạy trên một bộ xử lý mà không có bất kỳ yêu cầu nào về độ trễ.
  • song song . Nếu ưu tiên là hiệu suất cao nhất của ứng dụng và không có yêu cầu về độ trễ (hoặc thời gian tạm dừng từ một giây trở lên được chấp nhận).
  • CMS/G1 . Nếu thời gian phản hồi quan trọng hơn thông lượng tổng thể và thời gian tạm dừng thu gom rác phải ngắn hơn một giây.
  • ZGC . Nếu thời gian phản hồi có mức độ ưu tiên cao và/hoặc có liên quan đến một đống rất lớn.

7.2* Đề xuất thu gom rác

Tránh kích hoạt thủ công

Ngoài các cơ chế cơ bản của việc thu gom rác, một trong những điểm quan trọng nhất về quy trình này trong Java là nó không mang tính quyết định. Đó là, không thể dự đoán chính xác khi nào nó sẽ xảy ra trong thời gian chạy.

Khi sử dụng các phương thức System.gc() hoặc Runtime.gc(), bạn có thể bao gồm một gợi ý trong mã của mình để khởi động trình thu gom rác, nhưng điều này không đảm bảo rằng nó sẽ thực sự chạy.

Sử dụng các công cụ phân tích

Nếu bạn không có đủ bộ nhớ để chạy ứng dụng của mình, bạn sẽ gặp phải tình trạng chậm, thời gian thu gom rác lâu, sự kiện "thế giới dừng" và cuối cùng là lỗi hết bộ nhớ. Điều này có thể chỉ ra rằng heap quá nhỏ, nhưng nó cũng có thể chỉ ra rằng ứng dụng bị rò rỉ bộ nhớ.

Bạn có thể sử dụng một công cụ giám sát như jstat hoặc Java Flight Recorder để xem liệu việc sử dụng heap có tăng vô hạn hay không, điều này có thể chỉ ra một lỗi trong mã.

Ưu tiên cài đặt mặc định

Nếu bạn có một ứng dụng Java nhỏ, độc lập, có thể bạn sẽ không cần thiết lập bộ sưu tập rác. Các cài đặt mặc định sẽ phục vụ bạn tốt.

Sử dụng các cờ JVM để tùy chỉnh

Cách tiếp cận tốt nhất để thiết lập bộ sưu tập rác trong Java là đặt các cờ JVM. Cờ có thể được sử dụng để đặt bộ thu gom rác (ví dụ: Nối tiếp, G1, v.v.), kích thước ban đầu và tối đa của heap, kích thước của phân vùng heap (ví dụ: Thế hệ trẻ, Thế hệ cũ), v.v. hơn.

Chọn vòi phù hợp

Một hướng dẫn tốt về cài đặt ban đầu là bản chất của ứng dụng tùy chỉnh. Ví dụ: trình thu gom rác đồng thời hoạt động hiệu quả nhưng thường làm tăng các sự kiện “thế giới dừng”, làm cho nó phù hợp hơn cho quá trình xử lý nội bộ khi thời gian tạm dừng dài có thể chấp nhận được.

Đồng thời, trình thu gom rác CMS được thiết kế để giảm thiểu độ trễ, khiến nó trở nên lý tưởng cho các ứng dụng web trong đó khả năng phản hồi là quan trọng.