, 나는이 과도 라이프 스타일 구성된 구성 요소 : 다음과 같이 사용됩니다캐슬 윈저 : 일시적인 구성 요소가 가비지 수집됩니까? 성 윈저를 사용
<component id="publish.mapping.default"
service="IMyService, MyAssembly"
type="MyServiceImplementation, Myassembly"
lifestyle="transient" />
:
는var service = container.Resolve<IMyService>(componentId);
// service usage ....
// service goes out of scope ...
내 질문은 서비스 인스턴스 쓰레기가 이후에 수집 된 것입니다 범위를 벗어나거나 캐슬 윈저가 참고로 붙잡을 것인가? 나는 this similar question을 발견했는데, 이것은 후자의 경우 일 수 있음을 의미한다. 그러나 거기에 게시 된 링크를 검토 한 후에, 참조가 계속 유지되고 있는지 또는 IDisposable을 구현할 경우 해당 객체가 폐기되었는지 확인하는 것이 확실하지 않다. 내 물건을 처분 할 필요가 없습니다.
Castle Windsor가 인스턴스를 유지하는 경우이를 방지 할 수있는 쉬운 방법이 있습니까?
수정
출시 추적 정책을 설정해야합니다. XML 구성 파일에서 구성 할 수 있습니까, 아니면 코드에서 설정해야합니까? 릴리스 추적 정책을 구성 요소별로 설정할 수 있습니까?
감사합니다. 구성 요소 단위로 구성 할 수 있는지 여부를 알고 있습니까? (내 질문에 편집 참조) – driis
나는 그렇게 생각하지 않는다. 나는 실제로 Castle을 사용하지 않지만, 문서는 커널 전체를 제안하는 것처럼 보입니다. 이것이 올바른지 확실하지 않지만 구성 요소 유형에주의를 기울이는 사용자 지정 정책을 추가하는 것이 가능할 수 있습니다. –
릴리스 정책의 설정은 컨테이너 폭입니다. 실제로 릴리스 정책 설정은 컨테이너 인스턴스를 작성한 후에 수행해야하는 첫 번째 작업 중 하나임을 지정하는 문서가 있습니다. 이 규칙을 따르지 않으면 특정 릴리스 정책을 사용하여 다른 구성 요소를 사용하여 일부 구성 요소가 만들어집니다. 이로 인해 메모리 누수가 발생할 확률이 높아질 수 있습니다. – Chai