getMemoryStats returns memory usage statistics
()
| 188 | |
| 189 | // getMemoryStats returns memory usage statistics |
| 190 | func (b *Buffer) getMemoryStats() map[string]interface{} { |
| 191 | b.mu.RLock() |
| 192 | defer b.mu.RUnlock() |
| 193 | |
| 194 | stats := make(map[string]interface{}) |
| 195 | stats["current_bytes"] = b.memoryUsage |
| 196 | stats["current_formatted"] = formatBytes(b.memoryUsage) |
| 197 | stats["limit_bytes"] = b.maxMemory |
| 198 | stats["limit_formatted"] = formatBytes(b.maxMemory) |
| 199 | |
| 200 | if b.maxMemory > 0 { |
| 201 | stats["usage_percent"] = float64(b.memoryUsage) / float64(b.maxMemory) * 100.0 |
| 202 | stats["available_bytes"] = b.maxMemory - b.memoryUsage |
| 203 | stats["available_formatted"] = formatBytes(b.maxMemory - b.memoryUsage) |
| 204 | } else { |
| 205 | stats["usage_percent"] = 0.0 |
| 206 | stats["unlimited"] = true |
| 207 | } |
| 208 | |
| 209 | return stats |
| 210 | } |
| 211 | |
| 212 | // formatBytes formats bytes into human-readable format |
| 213 | func formatBytes(bytes int64) string { |