系統性排查
- 算法/數據結構:避免全量加載、優先流式處理、用緊湊結構 (位域、結構體對齊)。
- 及時釋放:`free`/`munmap` 配對 `malloc`/`mmap`,RAII 風格封裝。
- 減少全局/靜態變量:生命周期長佔用常駐內存。
- 避免大文件一次性讀入:`mmap` 分頁讀取、分塊處理。
- 內存池/對象池:高頻小對象分配降低碎片與系統調用開銷。
- 檢查泄漏:Valgrind `--leak-check=full`、AddressSanitizer (`-fsanitize=address`)。
工具
- `top`/`htop` 觀察 RES/VIRT。
- `pmap -x PID` 看映射區域。
- `/proc/PID/smaps` 詳盡統計。
原則
「能不分配就不分配、能早釋放就早釋放、能流式就不全量」。