39 lines · 1.3 KB · Swift
RawDownload
import Foundation @MainActorextension UsageStore {    func scheduleMemoryPressureRelief() {        guard self.memoryPressureReliefTask == nil else { return }         self.memoryPressureReliefTask = Task.detached(priority: .utility) { [weak self] in            for delay in [Duration.seconds(2), .seconds(8), .seconds(20)] {                try? await Task.sleep(for: delay)                guard !Task.isCancelled else { return }                MemoryPressureRelief.releaseFreeMallocPages()            }            await MainActor.run { [weak self] in                self?.memoryPressureReliefTask = nil            }        }    }     func trimRebuildableCachesForMemoryPressure() -> MemoryPressureCacheTrimSummary {        let openAIWebDebugLineCount = self.openAIWebDebugLines.count        let summary = MemoryPressureCacheTrimSummary(openAIWebDebugLines: openAIWebDebugLineCount)         self.openAIWebDebugLines.removeAll(keepingCapacity: false)        self.openAIDashboardCookieImportDebugLog = nil         return summary    }     #if DEBUG    func seedRebuildableCachesForMemoryPressureProof() {        self.openAIWebDebugLines = [            "debug memory pressure line 1",            "debug memory pressure line 2",        ]        self.openAIDashboardCookieImportDebugLog = self.openAIWebDebugLines.joined(separator: "\n")    }    #endif}