2011-08-15 2 views
2

내 웹 사이트에서 모든 ObjectContext를 유지하는 ObjectContextStorage가 있습니다. http 요청이 완료되면이 저장소를 버리고 (HttpContext.Current.Items에서 제거)이 저장소에 ObjectContexts를 삭제합니다.Entity Framework - 처리 후 _objectTypeCount

지금 내 ObjectContext가 삭제 된 것으로 생각할 때 내 웹 사이트를 다시로드 할 때 내 ObjectContext의 _objectTypeCount를 디버깅하고 볼 때 계속 유지됩니까?

이전 ObjectContext가 삭제 된 후에도 여전히 내 메모리에있는 이유는 무엇입니까?

답변

5
당신은 ObjectContext 클래스의 정적 변수 시청

:

private static int _objectTypeCount; // Bid counter 
internal readonly int ObjectID = System.Threading.Interlocked.Increment(
                 ref _objectTypeCount); 

을 나는 이것의 목적은 무엇 단서도 없어.

(그것은 ObjectContext는 응용 프로그램 또는 세션 수명, 또는 무엇인가 ??? 중에 생성 된 빈도를 계산)하지만 정적을 때문에 당신은 당신의 ObjectContext인스턴스가하지 않은 것을 계속 증가 카운터에서 결론을 내릴 수 없다 메모리에서 제거되었습니다.

편집

이 카운터와 코드의 ObjectID 분명히 그렇게 BID tracing 전화로로한다. "BID"은 "Built-In-Diagnostics"의 약자입니다. 위의 내부 코드 구조는 많은 ADO.NET 클래스에서 발생합니다. 추적에 대한 유형 이름의 예 (또는 고유 ID)를 제공하기 위해

EntityBid.Trace("<ec.EntityCommandDefinition.CreateCommand|ADV> %d#\n",ObjectID); 

_objectTypeCountObjectID 단지가 있습니다 : 단지 그 클래스에서 메서드 호출을 추적에 사용되는이 같은 추적 기능에서 발생합니다 산출.

추적 외에도 ObjectContext 클래스에는 기능적 의미가 없습니다.

+0

답변 해 주셔서 감사 드리며 늦어서 이에 대해 사과드립니다. 현재 얼마나 많은 ObjectContext 인스턴스가 메모리에 있는지 보는 다른 방법이 있습니까? – Julian

+0

@ Julian : 불행히도 나는 모른다. 나는 그 문제에서'ObjectContext'가 특별하지 않다고 믿습니다. "객체가 아직 메모리에 있는지 또는 이미 가비지가 수집되었는지를 확인하는 방법"이라는 질문이 생깁니다. 또는 뭔가 ... .NET 시스템 인프라에 대한 내 지식은이 질문에 직접 대답하기에 충분하지 않습니다. 흥미로운 새로운 질문이 될 것입니다 :) – Slauma