2009-06-15 5 views
0

일부 리소스 누출 - 특히 오라클 연결을 디버깅하려고합니다.Visual Studio 설치시 .NET에서 가비지 수집을 변경합니까?

내 로컬 컴퓨터에서 Page_Load()를 단계별로 수행하면 v $ session을 모니터링하여 db에서 생성 된 연결을 볼 수 있습니다.

Page_Load에서 나가자 마자 모든 연결이 닫힙니다.

dev 서버 (W3k, IIS6)에서 실행중인 동일한 코드가 리소스를 해제하지 않습니다. db에 따른 연결은 여전히 ​​존재합니다.

연결 풀링을 사용하거나 사용하지 않고이 작업을 시도했지만 로컬 서버는 누출 된 로컬에서도 문제가 없습니다.

.net 프레임 워크가 두 곳에서 동일하다는 것을 확인했습니다. & 코드도 동일합니다. 내가 뭘 놓치고 있니?

답변

2

가비지 수집기에는 Server GC, Workstation GC Concurrent 및 Workstation GC Non Concurrent의 세 가지 작동 모드가 있습니다. 각각은 다른 방식으로 작동하며 다양한 유형의 응용 프로그램에 최적화되어 있습니다. 이것은 다른 행동을 일으키는 원인 일 수 있습니다. 특히 하나 또는 여러 개의 CPU가 있는지 여부에 따라 특정 설정에 따라 동작이 변경 될 수 있습니다. 더 자세한 설명은 Tess Ferrandez의 블로그를보십시오.

+0

우리는 실제로 세 대의 시스템에서이를 테스트했으며 세 가지 시나리오 중 하나를 사용하는 것처럼 보입니다. 설명 주셔서 감사합니다! – chris

0

.NET에서 제한된 리소스 (예 : 데이터베이스 연결)를 사용할 때마다 리소스를 정리해야 할 때마다 개체에서 Dispose()를 명시 적으로 호출하여 개체가 올바르게 정리되고 릴리스되도록해야합니다.

Visual Studio에서 가비지 수집을 변경하는 이유는 무엇인지 알 수 없습니다. 다른 메모리 프로파일을 사용하는 다른 시스템에서 실행 중이기 때문에 가비지 수집기가 다르게 동작 할 수 있습니다. 가비지 수집기가 정의 된 방식, 특히 시스템에서 작동하는 것을 기대할 수는 없습니다. 그러나 데이터베이스 연결을 제대로 처리하지 못하는 큰 문제가있는 것처럼 보입니다.

+0

글쎄, 나는 우리가 모든 것을 적절히 처리하고 있다고 생각했다. 이제 나는 같은 코드가 다른 서버에서 왜 다르게 작동 하는지를 설명하고자한다. – chris

관련 문제