2016-08-12 3 views
5

내 프로젝트에 IMemoryCache을 사용합니다. 내 앱이 캐시에서 많은 오래 살아있는 객체를 푸시하면 어떻게 될지 궁금하다. 사용 가능한 모든 메모리를 차지할 수 있습니까? 앱의 최대 메모리를 전체적으로 정의 할 수 있습니까?Asp.net 코어의 메모리 사용 제한

답변

2

이것은 1 년 전에 작성되었습니다. 따라서 Microsoft.Extensions.Caching.Memory 패키지의 v1.x.x을 사용하고 있다고 가정합니다.

v2.x.x과 같은 속성이 없으므로 잠시 동안 코드를 파고 난 후 다음과 같은 설명서를 발견했습니다.

/// This is called after a Gen2 garbage collection. We assume this means there was memory pressure. 
/// Remove at least 10% of the total entries (or estimated memory?). 

https://github.com/aspnet/Caching/blob/rel/1.1.2/src/Microsoft.Extensions.Caching.Memory/MemoryCache.cs#L329

따라서 패키지는 OS가 코드를 가질 수만큼 메모리를 먹을 것이다. 이 제한에 도달하면 캐시 항목 압축 (제거)이 시작됩니다.

v2.x.x을 사용하면 SizeLimit 속성을 사용하여 수동으로 한도를 설정할 수 있으며 한도가 CompactionPercentage 일 때 압축 량을 설정할 수도 있습니다.

+0

SizeLimit는 크기 (바이트)를 의미합니까? – Makla