Tôi đã xem qua một câu hỏi phỏng vấn mà tôi không biết câu trả lời (ít giúp đỡ :)) tốt nó nói cái gì đó đại loại:finalizer bị mắc kẹt trong vòng lặp vô hạn
Class SomeClass : IDisposable
{
public void Dispose()
{
while(true)
{
}
}
~SomeClass()
{
Dispose();
}
}
1) Có đối tượng được hoàn thành khi không còn được tham chiếu sau GC tiếp theo? Câu trả lời của tôi là KHÔNG, bởi vì luồng hoàn thiện sẽ bị mắc kẹt trên vòng lặp vô hạn.
2) Điều gì có thể được thực hiện trong các Vứt bỏ để chấm dứt hoàn thiện và bao nhiêu lần vòng lặp sẽ tiếp tục trước khi đối tượng được xử lý (với ra có tính đến thời gian nó sẽ chi tiêu trong Gen tiếp theo)
Tôi không đặc biệt rõ ràng về câu hỏi chính xác (2) .Tôi đã hết thời gian ...
Không biết câu trả lời Tôi đặt bộ đếm tĩnh đến 3 và gọi số 3 . công việc :), nhưng đó không phải là câu trả lời
Tôi đoán đó là điều cần làm với GC .SupressFinalize()? có thể gọi GC.SupressFinalize() trước khi vào vòng lặp?
bất kỳ ý tưởng nào nếu không có câu trả lời cho câu hỏi không rõ ràng, nhiều hơn những gì họ có thể nhắm đến?
Bằng bất kỳ phương tiện này là một câu hỏi phỏng vấn tò mò - trong khi kiến thức chuyên sâu về GC là một khu vực hợp lệ để nói chung, tôi không biết câu trả lời cho câu hỏi cụ thể này sẽ hiển thị người phỏng vấn (ngoài thực tế là bạn biết có một chuỗi duy nhất thực hiện các cuộc gọi cuối cùng) – BrokenGlass