2011-12-03 26 views
29

Tôi tự hỏi trạng thái chính thức của bộ thu "rác đầu tiên" (G1) trong bản phát hành JDK 7 là gì. Tôi muốn sử dụng G1 như một gc tạm dừng thấp thay thế cho CMS, nhưng chỉ khi tôi thực sự có thể tin tưởng vào sự mạnh mẽ của nó.G1GC vẫn chưa chính thức sản xuất chưa?

Trước khi JDK 7 ra, G1 được quảng cáo là gc sáng bóng mới thay thế bộ thu CMS và thậm chí là gc mặc định trong JDK 7. Tuy nhiên, bây giờ với Oracle JDK 7u1, G1 không phải là gc mặc định bất kỳ máy nào tôi đã thử.

Mặc dù người ta không cần phải xác định -XX:+UnlockExperimentalVMOptions nữa khi sử dụng -XX:+UseG1GC trong JDK 7, đó là một tính năng JVM đó là chính thức hoàn toàn không có cơ sở:

Java 7 (JDK 7) garbage collection and documentation on G1

Các chỉ văn tôi có thể thấy rằng đề cập đến G1 là nghiêm túc lỗi thời và đã được viết rất lâu trước khi JDK 7 đã được ra khỏi:

http://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html

Ví dụ, chính thức "J Tài liệu ava HotSpot VM Options (http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html) làm cách nào để kích hoạt và điều chỉnh các bộ sưu tập khác nhưng thậm chí không đề cập đến sự tồn tại của G1. Như thể nó không tồn tại!

Điều này khá khó hiểu và tôi tự hỏi trạng thái thực sự của G1 và tương lai của nó là gì. Nó thực sự ổn định chưa? Các vấn đề còn lại (như rò rỉ, tai nạn giả và hỗ trợ thiết bị thiếu) đã được giải quyết chưa? Và nếu vậy, tại sao Oracle xử lý G1GC như một bí mật không đáng tin cậy (lúng túng?)? G1 có lẽ là một dự án thất bại mà bây giờ âm thầm ngưng? Hay tôi cần phải trả tiền cho tài liệu và hỗ trợ? Hoặc là nó vẫn chỉ là beta? Ai đó có thể khai sáng cho tôi về những gì đang xảy ra ở đây không?

Trả lời

1

Theo này: http://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html,

phát triển G1 hiện đang tập trung chủ yếu vào việc giải quyết bất kỳ vấn đề độ tin cậy còn lại và cải thiện hiệu suất

Ngoài ra,

Về GC thời gian tạm dừng, G1 đôi khi tốt hơn và đôi khi tồi tệ hơn so với CMS. Công việc đang được tiến hành để làm cho G1 luôn ổn định, nếu không phải là tốt hơn, CMS.

Vì vậy, G1 được cho là sẽ thay thế CMS khi JDK SE 7 chính thức bị loại.

+0

liên kết tương tự đã được đăng bởi OP và được cho là lỗi thời (nghĩ rằng nó không thay đổi kể từ năm 2008) - vì vậy trạng thái hiện tại là gì? – scravy

+0

Những điều mới nhất tôi đã tìm thấy sau khi cọ rửa internet về cơ bản nói những điều tương tự thông qua khoảng tháng hai năm nay. – Jon

12

Địa điểm hỏi câu hỏi này nằm trong danh sách gửi thư hotspot-gc-dev.

Nếu bạn xem qua archives bạn sẽ thấy rằng có rất nhiều công việc đang được thực hiện. Rất nhiều thư dường như là cam kết và xem xét các yêu cầu/nhận xét để họ bận rộn làm việc với nó.

Tôi chưa tìm thấy bất kỳ thông báo tin tức chính thức nào, nhưng đó là cách Oracle hoạt động. Bạn có thể hỏi về danh sách gửi thư đó như thế nào họ nghĩ rằng họ đang đi, nếu bạn hài lòng với một bình luận không chính thức và không ràng buộc từ một trong những nhà phát triển.

EDIT: @scravy gửi an email vào danh sách gửi thư, đây là response nhận:

Tôi không nghĩ rằng có một câu trả lời đơn giản cho câu hỏi này, mặc dù lẽ không. Trọng tâm ban đầu của G1 là cung cấp tạm dừng hợp lý cho đống rất lớn. Có nghĩa là hôm nay nó có thể không phải là sự lựa chọn tốt nhất cho tất cả mọi người. Chúng tôi nghĩ rằng công nghệ có 'rất nhiều chân' mặc dù, có nghĩa là với sự thích nghi, nó có thể giải quyết nhiều loại khác nhau của nhu cầu thu gom rác thải . Vì vậy, một ngày, nó có thể là trình thu thập mặc định hiệu quả, nhưng vẫn còn quá sớm để biết chắc chắn.

Xem xét thay đổi hành vi GC có thể rất gây rối cho triển khai hiện tại, chúng tôi không muốn thực hiện các thay đổi như thế này ngay cả trong các bản phát hành chính mà không cần thông báo nâng cao đáng kể. Vì vậy, trong các bản phát hành hiện tại, nếu bạn không chỉ định người thu thập, chúng tôi cố gắng thực hiện một số lựa chọn tự động đơn giản , nhưng tôi nghi ngờ chúng tôi sẽ thực hiện các thay đổi triệt để cho hành vi đó trong thời gian ngắn.

Đối với câu hỏi lớn hơn liên quan đến G1 được hỗ trợ, câu trả lời hiện tại là không. Nhưng hãy nhớ rằng cam kết hỗ trợ mà cung cấp cho khách hàng trả tiền của mình đối với các sản phẩm được hỗ trợ là khá đáng kể và có nhiều hơn thế nữa so với chỉ đáp ứng các yêu cầu về chức năng và độ tin cậy.

Chúng tôi tiếp tục khuyến khích mọi người kiểm tra và đánh giá G1 và khóa học , cung cấp phản hồi cho chúng tôi khi chúng tôi tiếp tục phát triển đáng kể trên G1.

-John

EDIT: Theo this link on Oracle's site nó trông giống như G1GC hiện đang hỗ trợ đầy đủ.

+0

Tôi đã gửi một email ở đó. Đang chờ trả lời :-) – scravy

+0

@scravy Có vẻ như bạn đã nhận được phản hồi đó! Tôi sẽ đăng bài ở đây. – Bringer128

0

AFAIK, G1 không phải là bí mật - mở cho thử nghiệm sử dụng đủ dài - ít nhất một hoặc hai năm. Mỗi JavaOne đi kèm với một số khía cạnh về G1 sẽ tốt như thế nào :)

Từ các nguồn không chính thức: nó là một trong những trọng tâm hiện tại cho các máy in java, để sản xuất G1 sẵn sàng cuối cùng. Họ chỉ không sẵn sàng để mở nó cho JDK 7. Chỉ cần chờ đợi :)

3

Chúng tôi đã sử dụng G1GC, từ gần một năm rưỡi. Nó hoạt động tốt trong hệ thống xử lý giao dịch quan trọng của chúng tôi, và nó được chứng minh là một hỗ trợ tuyệt vời với thông lượng cao, tạm dừng thấp, đồng thời, đa luồng và quản lý bộ nhớ được tối ưu hóa.

cài đặt JVM Chúng tôi đang sử dụng sau đây:

-server -d64 -Xms512m -Xmx3072m -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC 
-XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis 
-XX:MaxGCPauseMillis=400 -XX:GCPauseIntervalMillis=8000 
-XX:+UseCompressedOops -XX:NewRatio=50 
0

Dường như the page linked in the question đã được cập nhật:

Các rác-First (G1) thu gom rác được hỗ trợ đầy đủ trong Oracle JDK 7 cập nhật 4 và phiên bản mới hơn.

(Lưu ý, tuy nhiên, cho các nền tảng nhúng như ARM, nó chưa được hỗ trợ ở tất cả trong 7u4.)

0

G1 GC là sản xuất sẵn sàng từ Java 7 cập nhật phiên bản 4 ra mắt.

Từ oracle article (trong Bộ gom rác G1), bạn có thể tìm thấy các trường hợp sử dụng thực tế cho G1 GC.

Các ứng dụng chạy ngay hôm nay với CMS hoặc bộ thu gom ParallelOldGC sẽ có lợi khi chuyển sang G1 nếu ứng dụng có một hoặc nhiều đặc điểm sau.

  1. Thời lượng GC đầy đủ quá dài hoặc quá thường xuyên.
  2. Tỷ lệ phân bổ đối tượng hoặc quảng cáo thay đổi đáng kể.
  3. thu gom rác thải dài hoặc nén tạm dừng không mong muốn (dài hơn 0,5 đến 1 giây)

đã xem câu hỏi có liên quan để biết thêm chi tiết về G1GC và các thông số quan trọng được điều chỉnh tốt:

Java 7 (JDK 7) garbage collection and documentation on G1

Về các truy vấn khác của bạn:

Thực sự ổn định chưa? Các vấn đề còn lại (như rò rỉ, tai nạn giả và hỗ trợ thiết bị thiếu) đã được giải quyết chưa? Và nếu vậy, tại sao Oracle xử lý G1GC như một bí mật không đáng tin cậy (lúng túng?)? G1 có lẽ là một dự án thất bại mà bây giờ âm thầm ngưng? Hay tôi cần phải trả tiền cho tài liệu và hỗ trợ? Hoặc là nó vẫn chỉ là beta? Ai đó có thể khai sáng cho tôi về những gì đang xảy ra ở đây không?

  1. G1GC là ổn định.
  2. Tôi không tìm thấy bất kỳ rò rỉ nào trong thuật toán này.
  3. Oracle không giữ cho nó không có giấy tờ. Bạn có thể tìm thêm thông tin về G1GC herehere
  4. G1 không phải là một dự án thất bại và G1GC sẽ là thuật toán GC mặc định trong các phiên bản mới hơn của java (java 9)
  5. Bạn không cần phải trả tiền cho hỗ trợ. Nó không phải là beta.
Các vấn đề liên quan