Files
steipete--codexbar/Sources/CodexBar/StatusItemController+MemoryPressure.swift
T
2026-07-13 12:22:33 +08:00

50 lines
2.0 KiB
Swift

import AppKit
import CodexBarCore
extension StatusItemController {
func trimRebuildableCachesForMemoryPressure() -> MemoryPressureCacheTrimSummary {
let mergedSwitcherSelectionCount = self.mergedSwitcherContentCaches.values.reduce(0) { total, entries in
total + entries.count
}
let summary = MemoryPressureCacheTrimSummary(
menuCardHeights: self.menuCardHeightCache.count,
menuWidths: self.measuredStandardMenuWidthCache.count,
mergedSwitcherSelections: mergedSwitcherSelectionCount,
recycledMenuCardViews: self.menuCardViewRecyclePool.count)
self.menuCardHeightCache.removeAll(keepingCapacity: false)
self.measuredStandardMenuWidthCache.removeAll(keepingCapacity: false)
self.mergedSwitcherContentCaches.removeAll(keepingCapacity: false)
self.menuCardViewRecyclePool.removeAll(keepingCapacity: false)
return summary
}
#if DEBUG
func seedRebuildableCachesForMemoryPressureProof() {
let menu = NSMenu()
let cacheEntry = CachedMergedSwitcherMenuContent(
requiredMenuContentVersion: self.menuSession.contentVersion,
menuWidth: 300,
codexAccountDisplay: nil,
tokenAccountDisplay: nil,
localizationSignature: self.menuLocalizationSignature(),
items: [])
self.menuCardHeightCache[
MenuCardHeightCacheKey(
id: "debug-memory-pressure-card",
scope: UsageProvider.codex.rawValue,
width: 30000,
textScale: Self.menuCardHeightTextScaleToken(),
fingerprint: "debug-memory-pressure"),
] = 44
self.measuredStandardMenuWidthCache["debug-memory-pressure-width"] = 300
self.mergedSwitcherContentCaches[ObjectIdentifier(menu)] = [
.overview: cacheEntry,
.provider(.codex): cacheEntry,
]
self.menuCardViewRecyclePool["debug-memory-pressure-card"] = NSView()
}
#endif
}