Câu trả lời:
Từ Java SE 6 HotSpot [tm] Điều chỉnh thu thập rác trên máy ảo
sau đây
Quá thời gian GC và OutOfMemoryError
Bộ thu gom đồng thời sẽ ném OutOfMemoryError nếu dành quá nhiều thời gian cho việc thu gom rác: nếu hơn 98% tổng thời gian được dành cho việc thu gom rác và dưới 2% đống được khôi phục, một OutOfMemoryError sẽ được ném ra. Tính năng này được thiết kế để ngăn không cho các ứng dụng chạy trong một khoảng thời gian dài mà vẫn tiến triển rất ít hoặc không đạt được do đống quá nhỏ. Nếu cần, có thể tắt tính năng này bằng cách thêm tùy chọn -XX: -UseGCOverheadLimit vào dòng lệnh.
Chính sách giống như chính sách trong bộ sưu tập song song, ngoại trừ thời gian dành cho việc thực hiện bộ sưu tập đồng thời không được tính vào giới hạn 98% thời gian. Nói cách khác, chỉ những bộ sưu tập được thực hiện trong khi ứng dụng bị dừng mới được tính vào thời gian GC quá mức. Các bộ sưu tập như vậy thường do lỗi chế độ đồng thời hoặc một yêu cầu thu thập rõ ràng (ví dụ: lệnh gọi đến System.gc ()).
kết hợp với một lối đi xa hơn xuống
Một trong những cách sử dụng thu gom rác rõ ràng thường gặp nhất xảy ra với tính năng thu gom rác phân tán RMI (DGC). Các ứng dụng sử dụng RMI tham chiếu đến các đối tượng trong các máy ảo khác. Không thể thu gom rác trong các ứng dụng phân tán này mà không thỉnh thoảng thu gom đống cục bộ, vì vậy RMI buộc thu thập đầy đủ theo định kỳ. Tần suất của các tập hợp này có thể được kiểm soát bằng các thuộc tính. Ví dụ,
java -Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000
chỉ định thu thập rõ ràng một lần một giờ thay vì tốc độ mặc định là một lần một phút. Tuy nhiên, điều này cũng có thể khiến một số đối tượng mất nhiều thời gian hơn để lấy lại. Các thuộc tính này có thể được đặt cao như Long.MAX_VALUE để làm cho thời gian giữa các bộ sưu tập rõ ràng là vô hạn, nếu không muốn giới hạn trên về tính kịp thời của hoạt động DGC.
Có vẻ như ngụ ý rằng khoảng thời gian đánh giá để xác định 98% dài một phút, nhưng nó có thể được cấu hình trên JVM của Sun với định nghĩa chính xác.
Tất nhiên, có thể diễn giải khác.
-XX:+DisableExplicitGC
nó sẽ không ảnh hưởng đến cấu hình liên quan RMI và hệ thống sẽ gọi gc trong tập tần số với tham số-Dsun.rmi.dgc.server.gcInterval
-Dsun.rmi.dgc.server.gcInterval
tính đã có từ Java 1.2.