Vì C# sử dụng Bộ sưu tập rác. Khi nào cần sử dụng .Để giải phóng bộ nhớ?C# phân bổ bộ nhớ và các mẫu deallocation
Tôi nhận thấy có một vài tình huống nên tôi sẽ cố gắng liệt kê những tình huống mà tôi có thể nghĩ đến.
- Nếu tôi đóng Biểu mẫu chứa đối tượng loại GUI, các đối tượng đó có bị hủy đăng ký và do đó sẽ được thu thập không?
- Nếu tôi tạo một đối tượng địa phương bằng cách sử dụng mới nên tôi. Hãy sử dụng nó trước khi thoát khỏi phương pháp hoặc chỉ để cho GC xử lý nó? Thực hành tốt trong trường hợp này là gì?
- Có lần nào việc buộc GC có thể hiểu được không?
- Sự kiện có được GC thu thập khi đối tượng của nó được thu thập không?
có thể trùng lặp của http://stackoverflow.com/questions/2714811/is-there-a-common-practice-how-to-make-freeing-memory-for-garbage-collector-easie –
Ngoài ra, trùng lặp : http://stackoverflow.com/questions/331786/since-net-has-a-garbage-collector-why-do-we-need-finalizers-destructors-dispose Xem thêm: http://stackoverflow.com/questions/1090451/net-garbage-collector-basics http://stackoverflow.com/questions/1729289/net-garbage-collector-mystery http://stackoverflow.com/questions/298261/do-event-handlers-stop-garbage -kiểm tra-từ-xảy ra http://stackoverflow.com/questions/298261/do-event-handlers-stop-garbage-collection-from-occuring http://stackoverflow.com/questions/888280/ http: // stackoverflow .com/questions/371109/ –
Nói chung IDisposable được thực hiện cho các tài nguyên không được quản lý sẽ không được trả lại, đóng hoặc sử dụng tối ưu khi objec t được làm sạch bởi GC - đối tượng được quản lý luôn được làm sạch bởi GC. Xem IDisposable @ http: // msdn.microsoft.com/en-us/library/system.idisposable.aspx Đối với # 2, GC xử lý các đối tượng trong mã được quản lý cho dù bạn có gọi Dispose() hay không. # 1 và được xây dựng trong "đối tượng kiểu GUI" sẽ được thu thập cho dù bạn gọi Dispose() hay không. Ngoài ra, hãy xem http://msdn.microsoft.com/en-us/magazine/bb985010.aspx –