2016-08-12 38 views
5

Tôi sử dụng IMemoryCache trong dự án của mình. Tôi tự hỏi điều gì sẽ xảy ra nếu ứng dụng của tôi đẩy nhiều đối tượng sống lâu trong bộ nhớ cache. Nó có thể chiếm tất cả bộ nhớ có sẵn không? Tôi có thể xác định toàn bộ bộ nhớ tối đa cho ứng dụng không?Giới hạn sử dụng bộ nhớ trong Asp.net Core

Trả lời

2

Điều này đã được viết cách đây một năm vì vậy tôi giả sử bạn đang sử dụng v1.x.x gói Microsoft.Extensions.Caching.Memory.

Vì không có thuộc tính SizeLimit trong MemoryCacheOptions như v2.x.x, sau khi tìm hiểu mã trong một thời gian, tôi đã tìm thấy dòng tài liệu sau.

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

/// 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?). 

Vì vậy, các gói sẽ ăn lên càng nhiều bộ nhớ như hệ điều hành sẽ cho phép mã của bạn để có. Khi nó đạt đến giới hạn đó, nó sẽ bắt đầu nén (gỡ bỏ) các mục cache.

Với v2.x.x bạn có thể đặt giới hạn theo cách thủ công bằng cách sử dụng thuộc tính SizeLimit và thậm chí bạn có thể đặt lượng nén khi giới hạn được nhấn CompactionPercentage.

+0

SizeLimit có nghĩa là kích thước tính bằng byte không? – Makla

Các vấn đề liên quan