getMemoryStats method
Comprehensive memory and performance statistics
Implementation
Map<String, dynamic> getMemoryStats() {
final totalListeners = _listeners.values.fold<int>(
0,
(sum, set) => sum + set.length,
);
final listenerCounts = _listeners.values.map((set) => set.length).toList()
..sort();
final maxListeners = listenerCounts.isEmpty ? 0 : listenerCounts.last;
final avgListeners =
_listeners.isEmpty ? 0.0 : totalListeners / _listeners.length;
return {
'totalKeys': _listeners.length,
'totalListeners': totalListeners,
'maxListenersPerKey': maxListeners,
'averageListenersPerKey': avgListeners.toStringAsFixed(1),
'emptyKeys': _listeners.values.where((set) => set.isEmpty).length,
'notificationCount': _notificationCount,
'errorCount': _errorCount,
'memoryPressure': totalListeners > _maxTotalListeners
? 'HIGH'
: totalListeners > (_maxTotalListeners * 0.7)
? 'MEDIUM'
: 'LOW',
'lastCleanup': _lastCleanup?.toIso8601String() ?? 'never',
};
}