2014-11-06 3 views
2

:이 필요한 경우가 아니면 왜 응용 프로그램 수명주기의 초기에만 MemoryCache를 작성해야합니까? MSDN 문서 <a href="http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.memorycache(v=vs.110).aspx" rel="nofollow">here</a> 당으로

은 MemoryCache 인스턴스를 작성하지 마십시오. 클라이언트 및 웹 응용 프로그램에서 캐시 인스턴스를 만드는 경우 MemoryCache 인스턴스를 응용 프로그램 수명주기의 초기에 만들어야합니다. 은 응용 프로그램에서 에 사용할 캐시 인스턴스 수를 만들고 전역으로 액세스 할 수있는 변수 인 의 캐시 인스턴스에 대한 참조를 저장해야합니다. 예를 들어 ASP.NET 응용 프로그램에서는 응용 프로그램 상태로 참조를 저장할 수 있습니다. 응용 프로그램에서 하나의 캐시 인스턴스 만 만들면 기본 캐시를 사용하고 캐시에 액세스해야하는 경우 Default 속성에서 기본 캐시를 참조하십시오.

이것에 대한 이유를 아직 설명하지 못했고 다른 질문에서 MemoryCache을 삭제하는 것에 대해 질문했지만 확실한 결론에 도달하지 못한 것 같습니다. 내가 수집 한대로, 내 옵션은 MemoryCache을 처리하고 위의 설명서에 따라 권장되지 않는 새 인스턴스를 만들거나 성능 문제로 인해 권장되지 않는 열거자를 사용합니다. Trim()은 신뢰할 수 없다고 나와 있으므로 응용 프로그램 수명주기의 중간에 MemoryCache 인스턴스를 생성하는 것이 나쁜 생각으로 여겨지는지 조사하고 있습니다.

내가 궁금한 점에 대해 잠깐 살펴 보려고 할 때, 여기에있는 주요 문제는 내 MemoryCache이 일련의 메서드 호출 범위에서만 작동하기를 바랍니다. 이러한 메소드 호출은 데이터베이스를 통해 검색된 데이터를 공유하는 동일한 객체의 서로 다른 인스턴스에서 만들어 지지만, 매우 드물지만 만료 기간에 할당 한 몇 초의 짧은 기간 동안 변경 될 수 있습니다. 내 생각은 일련의 메소드 호출을 시작할 때마다 새로운 MemoryCache 인스턴스를 작성하여 각 인스턴스에 대해 데이터베이스에 많은 시간이 걸리지 않고 최신 데이터를 갖도록했습니다. 그러나 MSDN은 새 인스턴스를 만드는 것에 대해 조언하고 전역 변수에 모든 인스턴스를 포함 할 것을 제안합니다.

요약하면 응용 프로그램 수명주기 시작시 MemoryCache을 인스턴스화하는 것이 좋습니다. 왜 내가 사용하는 MemoryCache에 대한 글로벌 참조가 있어야합니까?

답변

0

인접 메모리가 필요하기 때문에. 메모리가 조각화되기 전에 그것을하고 싶습니다.

전 세계에 대해 잘 모릅니다.