2014-11-10 20 views
11

Tất cả các GC của tôi biết ngoại trừ Azul có phần đồng thời, nhưng có ít nhất một số thành phần stop-the-thế giới nhỏ. Tại sao không có nhiều GC như Azul?Tại sao không có nhiều GC tạm dừng của

Azul đã sáng chế công nghệ của họ đến mức không thể làm được?

Hoặc các rào cản đọc/ghi cần thiết cho hoạt động tạm dừng phải chịu quá nhiều chi phí mà chúng không thực tế đối với hầu hết khối lượng công việc?

+2

Tôi không nghĩ đây là câu hỏi về một vấn đề cụ thể, có thể trả lời và thay vào đó là một câu hỏi mời ý kiến ​​cá nhân và phỏng đoán. Vì vậy, nó có lẽ sẽ phù hợp hơn với một diễn đàn hơn Stack Overflow. –

+0

Tôi chỉ có thể đoán nhưng tôi giả định rằng một phần của nó là một giấy phép/bằng sáng chế vấn đề - azul muốn làm cho một số tiền anyways. Bên cạnh đó, từ kinh nghiệm thông lượng thô của họ trong các giấy trắng có vẻ như không có lợi ích tốc độ cho các ứng dụng lớn hơn và trên những ứng dụng nhỏ hơn, thỉnh thoảng là do bộ sưu tập stop-the-world có lẽ không quan trọng lắm. – Thomas

+0

Câu hỏi này dường như không có chủ đề vì nó chỉ hỏi tại sao một thứ chưa được phát minh. Không có câu trả lời thực tế là có thể. – EJP

Trả lời

7

Dựa trên the Azul whitepaper on C4, có vẻ như C4 là một công nghệ rất mới, triển khai một thuật toán được xuất bản vào năm 2005, đầu tiên trên phần cứng tùy chỉnh và sau đó được chuyển sang Linux trên x86 và thực hiện JVM rất gần với hạt nhân Hệ thống VM.

Vì OpenJDK/HotSpot được sử dụng rộng rãi trên một số nền tảng và khối lượng công việc lớn, nó có xu hướng di chuyển chậm hơn khi áp dụng các cải tiến chính trong thuật toán (chuyển sang TimSort là một ví dụ tốt). Các phiên bản Java 8 đã giới thiệu đại tu đầu tiên của hệ thống GC trong nhiều năm (với việc loại bỏ PermGen), và các cải tiến như C4, nếu thực tế được chuyển qua nền tảng hoặc trừu tượng mà không có nhược điểm đáng kể đối với nội bộ sổ sách kế toán JVM được dùng thử và sau đó được đưa vào OpenJDK/HotSpot trong các phiên bản sắp tới.

+0

Điểm tốt, trên thực tế, đầu Azul sử dụng bit phần cứng thẻ và sau đó sửa đổi cấp hạt nhân Linux và nó vẫn là giải pháp chỉ Linux, so với Shenandoah "BTW, để thiết lập kỷ lục thẳng: C4 (trong các hình thức đã được vận chuyển thương mại bên trong Zing JVM của chúng tôi trong một thời bây giờ) là phần mềm thuần túy, và nó chạy trên vani, distroed Linux/x86 distro (RHEL 5.x/6.x, CentOS 5.x/6.x, SLES, Ubuntu,…) và hạt nhân chưa sửa đổi đi kèm với chúng. " https://rkennke.wordpress.com/2013/06/10/shenandoah-a-pauseless-gc-for-openjdk/ – michaelok

6

Triển khai bộ thu gom rác khá phức tạp và không có nhiều ứng dụng thực sự biện minh cho một bộ thu tạm dừng. Như bạn đã đề cập, đọc/viết các rào cản để áp đặt một chi phí khá cao mà bạn chỉ muốn trả tiền nếu bạn hoàn toàn cần độ trễ thấp và sẵn sàng để có một hit trên thông lượng.

Điều đó nói rằng, GC tạm dừng thấp gọi là Shenandoah đang được triển khai trong JEP này: http://openjdk.java.net/jeps/189. Là một lập trình viên Java, tôi hy vọng rằng nó sẽ có sẵn trong một vài năm tới.

Các vấn đề liên quan