getMemoryStats method

Map<String, dynamic> getMemoryStats()

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',
  };
}