2013-09-03 63 views
5

Có câu hỏi sắp xếp - có đúng là tất cả GC trong JDK 7 (ngoài G1) luôn sử dụng stop-the-world cho bộ sưu tập thế hệ trẻ không?Bộ thu gom rác cho thế hệ trẻ

cảm ơn

+0

Cụ thể với lưu ý "(ngoài G1)" của bạn ở trên: Bộ sưu tập thế hệ trẻ của G1 cũng giống như thế giới dừng chân và nguyên khối như tất cả các bộ thu thập HotSpot khác trong Oracle và OoenJDK JVM. Không có các nhà sưu tập thế hệ trẻ không ngừng thế giới trong các JVM đó. –

Trả lời

10

Đối với OpenJDK, JRockit, IBM JVM và Sun/Oracle JDK, bộ sưu tập trẻ luôn ngăn chặn thế giới cho mọi nhà sưu tập có sẵn.

JVM duy nhất tôi biết trong đó không có điểm dừng mà nhà sưu tầm thế giới là Zing của Azul. (Không miễn phí)

Trong khi OpenJDK/Hotspot có CMS chủ yếu là đồng thời. Vẫn có những phần của thế giới dừng lại và trong một số trường hợp, CMS sẽ quay trở lại một GC đầy đủ, đó là điểm dừng chân của thế giới.

AFAIK, Thật khó để tìm các ví dụ thế giới thực mà G1 nhanh hơn về thời gian tạm dừng so với CMS, tuy nhiên nó luôn cải thiện.

Do your GC logs speak to you

+2

Để cụ thể, AFAIK, Zing hiện là nhà sưu tập thế hệ trẻ không ngừng duy nhất tồn tại trong một JVM giao hàng. Đối với tất cả các JVM khác (Oracle, OpenJDK, J9, jRockit, ...) và cho tất cả các nhà sưu tập của họ, bộ sưu tập thế hệ trẻ là sự kiện dừng chân toàn cầu. Và điều này dường như không thay đổi sớm. –

3

Không có gì là không đúng. Java 7 cũng hỗ trợ trình thu thập đồng thời Mark Sweep (CMS) cũ hơn. CMS là một bộ thu thấp tạm dừng, giống như G1.

CẬP NHẬT

Rõ ràng CMS chỉ dành cho thế hệ tenured ... theo khi đăng blog mà bạn tìm thấy tại http://blogs.oracle.com/jonthecollector/entry/our_collectors

Vì vậy, đó có nghĩa là đề xuất của bạn là trong thực tế đúng.


Người ta có thể tranh luận rằng tất cả các nhà sưu tập-pause thấp: - cần phải ngăn chặn các chủ đề mutator để làm một số giai đoạn của công việc của họ, và - có thể rơi trở lại vào một GC đầy đủ sử dụng nhãn hiệu/quét người thu gom khi họ không thể theo kịp.

Tuy nhiên, có sự khác biệt về chất lượng giữa các nhà sưu tập "chủ yếu đồng thời" như G1 và CMS và các nhà sưu tập khác tạm ngưng các chủ đề không phải GC trong toàn bộ quá trình thu thập. Đó là điều bình thường có nghĩa là chiến lược "ngăn chặn thế giới".

+0

Như tôi biết CMS chỉ được sử dụng cho các thế hệ cũ và lâu dài ...? –

+0

Bạn lấy "thông tin" ở đâu? Tôi đề nghị bạn đọc này - http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#cms –

+0

làm thế nào về điều này: https://blogs.oracle.com/jonthecollector/ mục nhập/bộ sưu tập của chúng tôi - nó quá cũ? –

5

Tất cả (hầu như) thu gom rác Java có một số loại của một giai đoạn Stop-the-thế giới mà tất cả các chủ đề Java (không bài bản địa) bị đình chỉ chờ đợi cho các hoạt động hệ thống độc quyền để hoàn thành. Trạng thái này đôi khi được gọi là điểm an toàn.

Bộ thu gom rác hiện đại đồng thời chạy cùng với các luồng ứng dụng, có nghĩa là bộ thu gom rác thực hiện công việc của nó cùng lúc với các luồng ứng dụng đang chạy. Trong quá trình thu gom rác có các giai đoạn mà bộ nhớ truy cập độc quyền là cần thiết, trong giai đoạn đó các luồng ứng dụng Java đi vào trạng thái safepoint.

Một giải pháp thay thế để loại bỏ bộ sưu tập rác thải thế giới là đi đến JVM Zing với bộ thu C4 từ hệ thống Azul. Việc thực hiện có một cách tiếp cận tạm dừng thấp mà không có bộ sưu tập stop-the-world nào cả. Thay vào đó, nó đang sử dụng một phương pháp nén đồng thời không có pha dừng.