Sử dụng lâu đài Windsor, tôi có một thành phần cấu hình với lối sống thoáng:Castle Windsor: Thành phần tạm thời của tôi có bị thu gom rác không?
<component id="publish.mapping.default"
service="IMyService, MyAssembly"
type="MyServiceImplementation, Myassembly"
lifestyle="transient" />
nào sẽ được sử dụng như thế này:
var service = container.Resolve<IMyService>(componentId);
// service usage ....
// service goes out of scope ...
Câu hỏi của tôi là, ví dụ dịch vụ sẽ được thu gom rác sau khi nó đi ra khỏi phạm vi, hoặc sẽ Castle Windsor giữ một tham chiếu? Tôi tìm thấy this similar question, ngụ ý rằng trường hợp thứ hai có thể là trường hợp - nhưng sau khi kiểm tra các liên kết được đăng ở đó, tôi không chắc liệu cuộc thảo luận có về việc tham chiếu hay không hoặc đảm bảo rằng đối tượng được xử lý nếu nó triển khai IDisposable. Đối tượng của tôi không cần phải được xử lý.
Nếu Castle Windsor nắm giữ bản sao, có cách nào dễ dàng để ngăn chặn điều này (có thể do cấu hình) không?
EDIT
Dường như, tôi cần đặt chính sách theo dõi phát hành. Điều này có thể được cấu hình trong tập tin cấu hình xml, hay nó cần phải được thiết lập trong mã? Chính sách theo dõi phát hành có thể được đặt trên cơ sở từng thành phần không?
Cảm ơn. Bạn có biết liệu điều này có thể được cấu hình trên cơ sở cho mỗi thành phần không? (Xem phần chỉnh sửa cho câu hỏi của tôi) – driis
Tôi không nghĩ vậy. Tôi không thực sự sử dụng Castle (tôi muốn), nhưng các tài liệu dường như gợi ý rằng đó là Kernel. Tôi không chắc liệu đây có phải là điều đúng hay không, nhưng có thể thêm chính sách tùy chỉnh chú ý đến loại thành phần của bạn ... –
Cài đặt chính sách phát hành là vùng chứa rộng. Trong thực tế, có các tài liệu chỉ rõ rằng thiết lập của một chính sách phát hành là một trong những điều đầu tiên phải được thực hiện sau khi tạo một cá thể của thùng chứa. Nếu quy tắc này không được theo sau thì một số thành phần sẽ được tạo bằng chính sách phát hành cụ thể và các thành phần khác sử dụng một quy tắc khác. Điều này có thể dẫn đến khả năng gây rò rỉ bộ nhớ cao. – Chai