diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/eventCache/MemoryTrimmingService.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/eventCache/MemoryTrimmingService.kt index 9aa4dfab76..3501261a01 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/eventCache/MemoryTrimmingService.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/eventCache/MemoryTrimmingService.kt @@ -53,8 +53,10 @@ class MemoryTrimmingService( otherAccounts: List, level: Int, ) { - // Tier 1: always run — cheap housekeeping + // Tier 1: always run — cheap housekeeping; cleanObservers only removes flows that are + // not currently held by the UI, so it is safe and inexpensive at any pressure level. cache.cleanMemory() + cache.cleanObservers() cache.pruneExpiredEvents() cache.prunePastVersionsOfReplaceables() @@ -66,8 +68,7 @@ class MemoryTrimmingService( } if (level >= ComponentCallbacks2.TRIM_MEMORY_RUNNING_CRITICAL) { - // Tier 3: critical pressure — sever observer links and drop muted content - cache.cleanObservers() + // Tier 3: critical pressure — drop muted content account.forEach { cache.pruneHiddenEvents(it) cache.pruneHiddenMessages(it)