2012-08-20 3 views
1

나는 exe 프로세스에서 호스팅되는 wcf 서비스를 만들고이 서비스를 호출하는 클래스 라이브러리를 통해 클라이언트를 인스턴스화했습니다. 클래스 라이브러리는 com 추가 기능이 2007 년을 능가하기 때문에 wcf 서비스의 이유는 대량의 데이터를 검색 할 때 인 - proc 메모리를 사용하지 않기 때문입니다.WCF 클라이언트가 예약 된 메모리를 해제하지 않음

WSHttpBinding을 사용하여 ClientBase를 구현하여 wcf 서비스를 만들었습니다. 현재 베어 뼈 프로젝트로 테스트 중이며 유일한 기능은 wcf 서비스에서 메시지를 반환하는 것입니다.

제 질문은 wcf 클라이언트를 만들 때 메모리 사용에 관한 것이고, 일단 폐기되면 해제되지 않는 이유는 무엇입니까? 필자는 주소 공간 모니터를 사용하여 메모리 사용량을 모니터링하고 바인딩 및 클라이언트가 약 70MB의 커밋 된 메모리를 사용하도록했습니다.

COM DLL을위한 WCF 메모리 사용 또는 GC에 대한 모든 정보는 유용 할 것이다

감사

답변

0

그게 .NET 작품 방식 가비지 컬렉션. 온갖 종류의 장소에서 이점을 주지만 일부에서는 방해가되는 것처럼 보입니다. 당신은 하나의 형태를 처리하고 새로운 인스턴스를 만들 때 그 메모리 공간을 재사용한다는 것을 발견 할 수 있습니다. 나는 그것을 의심하지만.

어쨌든 ... .net의 가비지 수집은 다소 재미 있습니다.

결국 정해진 시간 안에 ... 정해진 시간 안에 정리 될 것입니다. 내가 믿는

는 가비지 컬렉션

물론

Best Practice for Forcing Garbage Collection in C#

을 강제로 명령이 그 싸움 클럽 같은 비트 - 망가 가슴 이란게 이야기하고 당신이 그것을 발견 할 경우, 당신은 아마 당신이 hadnt 한 할 것

GC.Collect(); 

는 IIRC

또한 처리는 불리언 걸리는 과부하를 갖는다. 당신이 그것을 사실로 부르면, 모든 부분이 그들을 강요합니다. 쉽게 googleable하는 몇몇 처분 본이있다. Juval Lowry는 그의 구성 요소 책에서 아주 깊이 들어갑니다.

관련 문제