---
name: memory_overlay
kind: component
lang: cpp
domain: core
version: "1.0.0"
purity: pure
signature: "void memory_overlay()"
description: "Renderiza un overlay de estadisticas de memoria (RSS, peak, vsize) en la esquina inferior derecha"
tags: [imgui, memory, overlay, debug, dashboard, profiling]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: [imgui]
tested: false
tests: []
test_file_path: ""
file_path: "cpp/functions/core/memory_overlay.cpp"
framework: imgui
params: []
output: "Renderiza el overlay de memoria en el frame ImGui actual"
---

# memory_overlay

Muestra estadísticas de memoria del proceso en una ventana semi-transparente en la esquina inferior derecha. Complementa `fps_overlay` para un dashboard mínimo de rendimiento.

Las métricas se leen como máximo una vez por segundo y se cachean en una variable estática local, evitando I/O excesivo en el hot path de render.

## Métricas mostradas

| Campo | Linux | Windows |
|---|---|---|
| RSS (MB) | `VmRSS` de `/proc/self/status` | `WorkingSetSize` (PSAPI) |
| Peak RSS (MB) | `VmPeak` de `/proc/self/status` | `PeakWorkingSetSize` (PSAPI) |
| Virtual Size (MB) | `VmSize` de `/proc/self/status` | N/A (no mostrado) |

En Windows se requiere enlazar `psapi.lib` (el `.cpp` incluye `#pragma comment(lib, "psapi.lib")`).

## Ejemplo

```cpp
// En el loop de render, dentro de un frame ImGui:
fps_overlay();
memory_overlay();
```

## Notas

- La función sigue la misma convención que `fps_overlay`: mismos flags de ventana, mismo alpha (0.65).
- Posición: esquina inferior derecha (`pivot = {1,1}`), separada 10 px del borde.
- La lectura de `/proc/self/status` es I/O local de ~0.1 ms, amortizada a 1 Hz — despreciable.
- Con `TRACY_ENABLE` activo, la función registra una zona `ZoneScoped` para que aparezca en el profiler.
- Si la plataforma no puede leer las estadísticas, muestra "Memory: N/A" en gris.
