Trong cuốn sách C# 5.0 trong một nutshell bởi Joseph Albahari Tôi thấy điều nàyKhi nào một đối tượng đủ điều kiện thu gom rác thải?
nơi nó nói ngay sau khi bạn vượt qua các dòng mã mà một biến là cuối cùng đã qua sử dụng, đối tượng được tham chiếu bởi nó hội đủ điều kiện cho thùng rác collection (Đó là nếu không có biến nào khác chứa tham chiếu đến đối tượng đó).
Tuy nhiên theo this bài giảng từ UC Berkley, miễn là tham chiếu đến đối tượng tồn tại trên ngăn xếp, nó sẽ không bị thu gom rác. Sự hiểu biết của tôi là, cho đến khi phương thức trả về, biến nằm trên ngăn xếp. Có nghĩa là bất kỳ đối tượng nào được tham chiếu bởi nó vẫn còn sống cho đến khi phương thức trả về.
Đây có phải là lỗi trong sách hoặc bộ sưu tập rác java và .net hoạt động khác nhau không?
đọc này [MSDN bài viết] (http://msdn.microsoft.com/en-us/magazine/bb985010.aspx), bạn' sẽ tìm hiểu cách hoạt động chi tiết. –
Tôi nghĩ câu trả lời được chấp nhận đã bỏ lỡ điểm. "Ngăn xếp" bạn thấy trong IL là ** không ** giống như "ngăn xếp" mà CPU thấy. Nó chỉ là một điều logic được sử dụng để mô tả tính toán; nó không thực sự tồn tại. Nó chỉ có như là một sự đơn giản hóa; mã được tối ưu hóa trước khi được JIT'ed để lắp ráp. – Mehrdad
Chương 3 "Khái niệm cơ bản", phần 3.9 "Quản lý bộ nhớ tự động" trong đặc tả ngôn ngữ C# chính thức trả lời câu hỏi của bạn. Bạn có thể tải xuống từ Microsoft. http://www.microsoft.com/en-us/download/confirmation.aspx?id=7029. Tôi mất vài phút để kiểm tra. Bạn đã soạn câu hỏi của mình được bao lâu? –