Skip to content

Commit 61da73c

Browse files
authored
Update README.md
1 parent 15d5c05 commit 61da73c

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,13 @@ using (var lifetime = urlLocks.Acquire(url))
8383

8484
### Why not use MemoryCache?
8585

86-
MemoryCache is perfectly servicable. But in some situations, it can be a bottleneck.
86+
MemoryCache is perfectly servicable, but it has some limitations:
8787

8888
- Makes heap allocations when the native object key is not type string.
89-
- Is not 'scan' resistant, fetching all keys will load everything into memory.
89+
- Is not 'scan' resistant, fetching all keys will load everything into memory. This is known as sequential flooding.
9090
- Does not scale well with concurrent writes.
91-
- Executes code for perf counters that can't be disabled
92-
- Uses an heuristic to estimate memory used, and the 'trim' process may remove useful items.
91+
- Contains perf counters that can't be disabled
92+
- Uses an heuristic to estimate memory used, and evicts items using a timer. The 'trim' process may remove useful items, and if the timer does not fire fast enough the resulting memory pressure can be problematic (e.g. induced GC).
9393

9494
# Performance
9595

0 commit comments

Comments
 (0)