Có thể lập trình viên bắt đầu/dừng chương trình thu gom rác bằng ngôn ngữ lập trình C# theo lập trình không? Ví dụ: để tối ưu hóa hiệu suất và v.v.Có thể ngừng thu gom rác thải .NET không?
Trả lời
Không thực sự. Bạn có thể đưa ra các gợi ý GC
qua các phương pháp như GC.AddMemoryPressure
hoặc GC.RemoveMemoryPressure
nhưng không dừng lại hoàn toàn.
Bên cạnh đó, thu gom rác không phải là quá trình chuyên sâu. Các lập trình viên rất hiếm khi lo lắng về nó.
Ồ, tôi hiểu ... Làm thế nào về phương thức SuppressFinalize()? Nó có mục đích khác không? – Alex
SuppressFinalize hoạt động trên các đối tượng riêng lẻ. Chắc chắn không phải trên toàn bộ GC. Từ MSDN: Các đối tượng thực hiện giao diện IDisposable có thể gọi phương thức này từ phương thức IDisposable.Dispose để ngăn chặn trình thu gom rác gọi Object.Finalize trên một đối tượng không yêu cầu nó. (Vì vậy, về cơ bản nó là một tăng cường hiệu suất rất nhẹ.) –
Tôi không thấy làm thế nào điều này sẽ được thêm một gợi ý để * ngăn chặn * bộ sưu tập rác thải, mỗi se; nếu bạn gọi 'GC.AddMemoryPressure' thì sẽ có nhiều khả năng dẫn đến CLR tạo ra * nhiều bộ sưu tập rác hơn vì nó chỉ ra rằng bộ nhớ có sẵn cho CLR cho quá trình (ảo hoặc ngược lại) nhỏ hơn nó nghĩ. Một * có thể gọi là 'GC.RemoveMemoryPressure' mà không có một cuộc gọi tương ứng với' GC.AddMemoryPressure', trong một nỗ lực để lừa CLR nghĩ rằng nó có nhiều bộ nhớ hơn, nhưng người ta sẽ nghĩ rằng API có khả năng chống (một hy vọng) cho những thứ như vậy. – casperOne
Không, không có. Tốt nhất bạn có thể kích hoạt bộ sưu tập rác, mặc dù điều này được coi là một điều rất tệ vì nó có thể can thiệp vào các thuật toán lập lịch trình được xây dựng được GC sử dụng.
Bạn không thể kích hoạt thu thập , chỉ có thể "đề xuất". GC sẽ tự quyết định –
Nói chung, không. Và hầu hết mọi người sẽ xem xét tối ưu hóa sớm để lo lắng về việc thu gom rác thải trừ khi bạn làm một số hồ sơ và tìm ra rằng đó thực sự là nguyên nhân của hiệu suất kém trong ứng dụng của bạn.
Nếu bạn quan tâm đến việc chỉnh sửa GC cho hiệu suất (hoặc nhiều khả năng, tinh chỉnh ứng dụng của bạn để cải thiện hiệu suất của nó liên quan đến GC), MSDN có mô tả khá tốt về cách thực hiện.
Trong khi đó nó có thể, có những phương pháp trong GC
class:
GC.TryStartNoGCRegion(...)
và GC.EndNoGCRegion()
.
- 1. Buộc thu gom rác thải
- 2. HĐH có thể ngừng quá trình Java từ việc thu gom rác thải không?
- 3. Thông báo thu gom rác thải?
- 4. đa và thu gom rác thải
- 5. Trình xử lý sự kiện có ngừng thu gom rác thải không?
- 6. Nhân viên nền và thu gom rác thải?
- 7. Python: hành vi thu gom rác thải với ctypes
- 8. Có thể để có được OutOfMemoryError vì thu gom rác thải quá chậm?
- 9. Thu gom rác trong Perl
- 10. Thu gom rác trễ?
- 11. Các trường tĩnh có mở để thu gom rác không?
- 12. Đối tượng COM này có bị thu gom rác không?
- 13. Đối tượng không thu gom rác thải, nhưng không chứa gcroots
- 14. Tham khảo chéo và thu gom rác
- 15. Các quầy thu gom rác thải Java tất cả các quy trình Java
- 16. Hiệu quả của bộ thu gom rác .NET
- 17. Khi nào bộ thu gom rác net hoạt động?
- 18. Khi nào một đối tượng đủ điều kiện thu gom rác thải?
- 19. Sự khác biệt cơ bản giữa thu gom rác thải trong C# và Java là gì?
- 20. Tiêu chí để kích hoạt thu gom rác trong .Net
- 21. Thông báo Thu gom Rác Bỏ lỡ
- 22. Quản lý bộ nhớ JVM và sổ thu gom rác thải?
- 23. Có một JVM thiếu bộ thu gom rác không?
- 24. Hiệu suất tương đối của bộ thu gom rác thải đầu tiên của G1 (G1)?
- 25. Bộ thu gom rác có gọi là Dispose() không?
- 26. Tại sao Ada không có bộ thu gom rác?
- 27. Các loại giá trị có được thu gom rác không?
- 28. Ứng dụng CDI và phạm vi phụ thuộc có thể âm mưu tác động đến việc thu gom rác thải?
- 29. Thời gian tạm dừng có thể xảy ra trong chương trình Haskell do thu gom rác thải như thế nào?
- 30. "GC--" nghĩa là gì trong nhật ký thu gom rác thải java?
Bộ sưu tập rác không phải là một phần của ngôn ngữ lập trình C#. Đó là một phần của .NET CLR. –
"Kinda". Nếu bạn không bao giờ phân bổ bất cứ điều gì, GC sẽ không bao giờ thu thập. Trước khi phân bổ mọi thứ bạn cần và sau đó gọi 'GC.Collect()'. –
Cũng có thể xem câu trả lời này: http://stackoverflow.com/questions/6005865/prevent-net-garbage-collection-for-short-period-of-time/6005949#6005949 – Gamlor