예 거기 누출 은 누출을 정의하고 나중에 얼마나 큰 의미 방식에 따라 ...
누수로 인해 "메모리가 할당 된 상태로 남아 있어도 사용할 수 없음"을 의미하고 후자의 경우 dispose를 호출 한 후 언제든지 사용할 수 있음을 의미하는 경우, 영구적 인 것은 아니지만 누수가있을 수 있습니다 (예 : 애플리케이션 런타임의 수명).
MemoryStream을에서 사용하는 관리되는 메모리를 확보하기 위해, 당신은 그것을 unreference 할 필요가 그래서 바로 가비지 컬렉션 대상이되고, 그것에 대한 참조를 무효로. 이 작업을 수행하지 않으면 사용을 마친 시점부터 참조가 범위를 벗어날 때까지 일시적인 누수가 발생합니다. 그 동안 메모리를 할당에 사용할 수 없기 때문입니다.
using 문 (단순히 dispose를 호출하는 것보다)의 이점은 using 문에서 참조를 선언 할 수 있다는 것입니다. using 문이 완료되면 dispose가 호출 될뿐만 아니라 참조가 범위를 벗어나서 참조를 효과적으로 무효화하고 "reference = null"코드를 작성하는 것을 기억할 필요없이 즉시 가비지 수집 대상 개체를 만듭니다.
무언가를 즉시 참조 해제하지 않는 것은 고전적인 "영구적 인"메모리 누수는 아니지만 확실히 동일한 효과를가집니다. 예를 들어, Dispose를 호출 한 후에도 MemoryStream에 대한 참조를 유지하고 메서드에서 조금 더 아래로 더 많은 메모리를 할당하려고하면 ... 여전히 참조 된 메모리 스트림에서 사용중인 메모리를 사용할 수 없습니다. 참조를 무효화하거나 dispose를 호출하여 사용을 완료하더라도 범위를 벗어날 때까지