Tôi đã thử nghiệm nó với một ứng dụng nặng: 60-70GB được phân bổ cho heap, với 20-50GB được sử dụng bất cứ lúc nào. Với những loại ứng dụng này, thật thiếu sót khi nói rằng quãng đường của bạn có thể thay đổi. Tôi đang chạy JDK 1.6_22 trên Linux. Các phiên bản nhỏ rất quan trọng-- trước khoảng 1.6_20, có một số lỗi trong G1 gây ra NullPointerExceptions ngẫu nhiên.
Tôi thấy rằng nó rất tốt trong việc duy trì mục tiêu tạm dừng mà bạn đưa ra hầu hết thời gian. Mặc định dường như tạm dừng 100ms (0,1 giây) và tôi đã bảo nó thực hiện một nửa điều đó (-XX: MaxGCPauseMillis = 50). Tuy nhiên, một khi bộ nhớ thực sự cạn kiệt, nó sẽ hoảng sợ và thực hiện việc thu gom rác toàn thế giới. Với 65GB, mất từ 30 giây đến 2 phút. (Số lượng CPU có thể không tạo ra sự khác biệt; nó có thể bị giới hạn bởi tốc độ bus.)
So với CMS (không phải là GC máy chủ mặc định, nhưng nó phải dành cho máy chủ web và các ứng dụng thời gian thực khác), các lần tạm dừng điển hình dễ dự đoán hơn nhiều và có thể được thực hiện ngắn hơn nhiều. Cho đến nay, tôi đang gặp may mắn hơn với CMS vì những lần tạm dừng rất lớn, nhưng điều đó có thể là ngẫu nhiên; Tôi chỉ nhìn thấy chúng một vài lần sau mỗi 24 giờ. Tôi không chắc cái nào sẽ phù hợp hơn trong môi trường sản xuất của tôi vào lúc này, nhưng có lẽ là G1. Nếu Oracle tiếp tục điều chỉnh nó, tôi nghi ngờ G1 cuối cùng sẽ là người chiến thắng rõ ràng.
Nếu bạn không gặp sự cố với các trình thu gom rác hiện có, không có lý do gì để xem xét G1 ngay bây giờ. Nếu bạn đang chạy một ứng dụng có độ trễ thấp, chẳng hạn như ứng dụng GUI, G1 có lẽ là lựa chọn phù hợp, với MaxGCPauseMillis được đặt thực sự thấp. Nếu bạn đang chạy một ứng dụng ở chế độ hàng loạt, G1 sẽ không mua cho bạn bất cứ thứ gì.