# Claude Code Memory Cleanup Guide
Claude Code sessions that aren't properly exited (`/exit` or `Ctrl+D`) stay resident in memory as orphaned processes. They accumulate fast — 32 orphaned sessions can eat 22GB+ of RAM and fill up swap.
## Diagnose
```bash
# Check memory usage
free -h
# List all claude processes sorted by memory (heaviest first)
# - "?" in the TTY column = detached/orphaned (safe to kill)
# - "pts/XX Sl+" = attached to an active terminal (keep these)
ps aux --sort=-rss | grep -i claude | grep -v grep
```
## Clean Up — Kill Only Orphaned Sessions
```bash
# Kill detached processes (TTY == "?"), leave active terminal sessions alone
ps aux | grep -i claude | grep -v grep | awk '$7 == "?" {print $2}' | xargs -r kill
```
## Nuclear Option — Kill Everything
```bash
pkill -f "claude"
# Also clear swap if it's bloated
sudo swapoff -a && sudo swapon -a
```
## Prevention
- Always exit sessions with `/exit` or `Ctrl+D` — don't just close the terminal.
- Don't leave multiple idle sessions open.
- Restart long-running sessions periodically.
## Optional: Bash Alias
Add to `~/.bashrc`:
```bash
# Kill orphaned claude sessions, keep active ones
alias claude-cleanup='ps aux | grep -i claude | grep -v grep | awk '"'"'$7 == "?" {print $2}'"'"' | xargs -r kill'
# Kill everything
alias claude-killall='pkill -f "claude" && sudo swapoff -a && sudo swapon -a'
```
## Real Example: Before & After
```
# Before — 32 orphaned sessions, 49Gi used, 3.4Gi swap
Mem: 62Gi 49Gi used 5.2Gi free
Swap: 8.0Gi 3.4Gi used 4.6Gi free
# After — 3 active sessions kept, ~21Gi freed
Mem: 62Gi 28Gi used 25Gi free
Swap: 8.0Gi 784Mi used 7.2Gi free
```