2008-10-29 16 views
10

Tôi quan tâm đến cách hoạt động của bộ sưu tập rác. Tôi đã đọc về cách một số công việc như đánh dấu và quét, dừng và sao chép, GC thế hệ, vv ... Tôi muốn thử nghiệm với việc thực hiện một số điều này và so sánh hành vi của chúng. Một cách hay để bắt đầu thử nghiệm với của riêng tôi là gì? Lý tưởng nhất là một cái gì đó trong C, Java hoặc Python (mặc dù cuối cùng hai là mình thu gom rác do đó có vẻ như nó sẽ khó sử dụng chúng ...)Tôi có thể thử nghiệm thu gom rác bằng cách nào?

Trả lời

14

Không bao giờ tự chơi với nó, nhưng cái luôn được đề cập để sử dụng với C/C++ là Hans Boehm's.

+0

Chỉ cần thêm rằng đây được coi là * bộ sưu tập rác của sự lựa chọn nếu bạn muốn ở trong C/C++ thay vì sử dụng máy ảo ... –

+0

+1, tôi sử dụng nó thường xuyên khi tôi đang làm việc trên một cái gì đó cực kỳ phức tạp, nơi một đôi miễn phí() sẽ đánh vần thảm họa. –

+0

Đúng vậy, đó cũng là GC đang được dự án gcc sử dụng. – none

0

Thực hiện JVM của riêng bạn. Không có gì lạ mắt, chỉ là những điều cơ bản. Có rất nhiều chương trình/trình biên dịch/ngôn ngữ tạo mã JVM để bạn có nhiều tài liệu để kiểm tra.

2

Thời gian chạy .NET và Java runtime giờ đây là nguồn mở, vì vậy bạn có thể thử nghiệm với thời gian chạy nó nếu bạn muốn chơi xung quanh bằng ngôn ngữ lập trình hỗ trợ hiện tại. Tuy nhiên, nếu bạn muốn tự mình làm điều này, bạn có lẽ sẽ phải tạo thời gian chạy của riêng bạn mà nó có ngôn ngữ riêng của nó.

0

Vui chơi với, nhưng thu gom rác thải là một tác phẩm nghệ thuật tối. Không phải để làm cho nó hoạt động, nhưng để làm cho nó hoạt động với hiệu quả mà các máy ảo mới nhất làm.

Chúng tôi đang nói nhiều giai đoạn và phép thuật giúp phân bổ tốc độ so sánh hơn với phân bổ stack hơn so với malloc.

Toàn bộ đá khái niệm eden.

Bạn có thể muốn đọc một số thông tin chi tiết về các kỹ thuật được sử dụng.

Dưới đây là một bài viết mà dường như có một cái nhìn tổng quan tốt (chỉ cần từ một google nhanh chóng/scan)

http://www.devx.com/Java/Article/21977/0/page/1

+0

-1: "bộ sưu tập rác là một nghệ thuật tối". Xin lỗi nhưng tôi nghĩ rằng đó là phản tác dụng để làm cho báo cáo như thế này khi bạn có thể viết một nhà sưu tập rác phong nha trong 100 dòng mã. –

+1

@Jon Harrop Làm một GC đơn giản là dễ dàng (chính xác những gì tôi đã nói trong câu trả lời của tôi), một nghệ thuật tối là làm cho nó làm việc với hiệu quả của các máy ảo mới hơn là gì. Bạn có thực sự không đồng ý với điều đó không? Bạn đã xem xét những gì các máy ảo mới làm? –

+0

@Bill: Tôi đã viết blog này: http://flyingfrogblog.blogspot.com/2010/09/are-multicore-capable-garbage.html –

0

MMTk chứa một tập hợp lớn các bộ thu gom rác hiệu suất cao. Nó bao gồm:

  • sao chép sưu tập
  • Tracing nhà sưu tập
  • đếm tham khảo nhà sưu tập

Nó cũng có:

  • Dừng các nhà sưu tập trên thế giới
  • nhà sưu tập đồng thời

Vì đây là nền tảng nghiên cứu nên có một số nhà sưu tầm trước như generation reference counting collector.

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