MSDN 비고에 따르면 .Dispose()
은 완료 후 System.DirectoryServices.SearchResultCollection
에서 호출해야합니다.foreach-object 뒤에 SearchResultCollection을 삭제하십시오.
구현 제한 때문에 SearchResultCollection 클래스는 가비지 수집 될 때 모든 관리되지 않는 리소스를 해제 할 수 없습니다. 메모리 누수를 방지하려면 SearchResultCollection 개체가 더 이상 필요하지 않을 때 Dispose 메서드를 호출해야합니다..
은 또한 당신이 foreach
이가 반복되기 전에 메모리에 저장되는 전체 SearchResultCollection
필요하기 때문에 Foreach-Object
대신 foreach
메모리를 절약하기 위해 사용해야 읽고있다.
$objSearcher.FindAll() | Foreach-Object { $_ }
는
난 당신이Foreach-Object
를 사용하는 경우 어떻게
.Dispose()
를 호출하는 것입니다 알아낼 수 없습니다 무엇
$objResults = $objSearcher.FindAll()
foreach($objResult in $objResults)
{
$objResult
}
보다 낫다?
이 있습니까 : 위의 때문에, 당신은 변수 처음에 저장할 수 있습니다
그러나
는 그냥 파이프 다음, 당신이ForEach-Object
와 객체의 방법Dispose
의 질문에foreach
했던 좋아 'foreach ($ obj in $ objResults) '를 통해이 작업을 수행하면 어떤 이점이 있습니까? – IMTheNachoMan"이 작업을 수행 할 때 어떤 이점이 있습니까?" 아니 정말. –
@IMTheNachoMan 빌이 말했듯이, 그렇지 않습니다. 다루는 객체는 열거자가 아니며 미리 생성 된 컬렉션이 아니기 때문에 별 문제가되지 않습니다. 응용 분야에 가장 적합한 것을 사용하십시오. 나는 당신이 이것을 선택한 경우'.Dispose()'를 실행하는 방법을 시연하고있었습니다 (당신의 질문이 제시 한대로). – briantist