cuốn sách gpt4 ai đã làm

java - Thế hệ cũ cần đầy đủ đến mức nào để kích hoạt chu trình GC chính?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 08:14:10 28 4
mua khóa gpt4 Nike

Tôi đang cố gắng giải quyết vấn đề về mức độ sử dụng thu gom rác cao trong môi trường sản xuất của chúng tôi và tôi tự hỏi liệu việc đặt kích thước vùng heap lớn để đảm bảo rằng thế hệ cũ không bao giờ đầy có ngăn chặn các chu kỳ GC chính được kích hoạt hay không.

Để đạt được điều này, tôi muốn có một ngưỡng cụ thể kích hoạt chu trình GC chính. Nếu giả thuyết này là đúng, ai đó có thể cho tôi biết con số này là bao nhiêu không? Nếu không, tôi đánh giá cao lời giải thích về cách các chu kỳ chính này thực sự được kích hoạt và liệu một loạt chiến lược của tôi có thể hoạt động hay không.

câu trả lời hay nhất

Quét dấu đồng thời

Giả sử bạn sử dụng trình thu thập Quét đánh dấu đồng thời (ví dụ: -XX:+Sử dụngConcMarkSweepGC), theo mặc định nó sẽ đạt được trong OldGen 70% Bắt đầu bộ sưu tập đồng thời. nhưng nó có thể vượt qua CMSBắt đầuTỷ lệ sử dụng Thực hiện các điều chỉnh như:

-XX:CMSInitiatingOccupancyFraction=42

Điều này sẽ bắt đầu thu thập đồng thời ở mức 42% so với 70% mặc định

Xin lưu ý rằngCMSBắt đầuTỷ lệ sử dụng Chỉ có giá trị cho bộ sưu tập đầu tiên. Để kích hoạt nó "mãi mãi" hãy thêm Sử dụngCMSBắt đầu chỉ sử dụng:

-XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=42

Tỷ lệ không có heap tối đa

Bạn cũng có thể xem MaxHeapFreeRatio, đó là GC để tránh bị co lại sau Tỷ lệ phần trăm tối đa của vùng nhớ heap miễn phí được đặt thành 70%Theo mặc định, nhưng bạn cũng có thể thay đổi nó:

-XX:MaxHeapFreeRatio=42

Đi đến tận cùng của nó

Nhưng trước khi thay đổi bất kỳ tham số nào, tốt hơn hết bạn nên hiểu lý do dẫn đến "mức sử dụng thu gom rác cao" này:

  • Nếu nó cần được thu thập thường xuyên thì tại sao nó lại đến OldGen?
  • Bạn có đang thu thập dữ liệu phát trực tuyến không?
  • Có vấn đề gì không nếu kích thước heap quá nhỏ?
  • Việc lưu trữ dữ liệu cụ thể này ra khỏi heap có hợp lý không?
  • Chờ đợi..

Bởi vì thông thường JVM rất giỏi trong việc biếtkhiBộ sưu tập, và nó sẽ chỉ trở nên tốt hơn.


khácTùy chọn HotSpot VM

Giới thiệu về java - Thế hệ cũ cần đầy đủ đến mức nào để kích hoạt chu trình GC chính? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/23176974/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress