Trong một cuộc phỏng vấn, Tôi đã được yêu cầu đưa ra một cách để đảm bảo một khối mã trong C# có thể chạy trong thời gian nhất quán để đáp ứng một yêu cầu thời gian giả định. Người phỏng vấn đã đề cập rằng một cách là gọi trình thu gom rác để thu thập trước khi khối mã được thực thi sao cho nó giảm đáng kể xác suất của GC chạy lại trong khối mã đó. Nó được áp dụng cho các phép đo dựa trên thời gian chính xác của một thiết bị y tế, nơi thu gom rác thải có thể ảnh hưởng đến các phép đo đó.Buộc GC.Collect() để giảm cơ hội chạy trong thời gian mã nhạy cảm?
Điều đó hợp lý với tôi, nhưng tôi không thể tìm thấy bất kỳ thông tin nào được sao lưu. Sự đồng thuận chung mà tôi đã xem xét là không bao giờ gọi GC.Collect() và các trường hợp ngoại lệ không bao gồm trường hợp này.
Có thể chạy GC.Collect() thực sự làm giảm khả năng hoạt động của nó sớm không? Đây có phải là cách tiếp cận đúng để làm điều này bằng cách sử dụng khuôn khổ .net? GC.Collect() có thu thập các chương trình CLR khác không hay chỉ áp dụng cho quy trình hiện tại?
Cho rằng GC chạy vào những thời điểm không xác định, tôi sẽ rất thận trọng ở bất cứ ai gọi nó và suy nghĩ nó sẽ không chạy lại trong phần mã quan trọng của họ. –
Tôi đã chỉnh sửa tiêu đề của bạn. Vui lòng xem, "[Câu hỏi có nên bao gồm" thẻ "trong tiêu đề của họ không?] (Http://meta.stackexchange.com/questions/19190/)", trong đó sự đồng thuận là "không, họ không nên". –
Tôi sẽ không muốn tính chính xác của phần mềm thiết bị y tế của tôi dựa vào các thay đổi của thuật toán lập lịch GC. Các tác giả của thuật toán lập lịch trình đó và các tác giả của mã thiết bị không nói chuyện với nhau. –