# 00 · 비전 — Nexa MemKeeper > 프로그램 목적(사용자 확정 2026-08-07)과 설계 원칙. 예산 수치는 **제안** — 확정 시 DR로 승격. ## 1. 프로그램 목적 (사용자 확정) **Windows 시스템 트레이에 상주하며 메모리를 지속 관찰하고, 필요 없어진 메모리를 회수해 여유분을 늘려주는 초경량 메모리 최적화 도구.** - 상주 프로그램 자체의 크기·메모리 점유는 **최소화**한다 — 기능을 위해 도구가 메모리를 낭비하면 목적 자체가 모순. - 실제 기능(목록 창·정리 실행)은 상주할 필요가 없다 — **수행 시에만 점유하고, 종료 시 사용한 메모리를 스스로 회수**한다. - 트레이 아이콘 클릭 → **메모리 점유 Top 5** 목록·사용량 표시. - "목록 보기" → **프로세스 트리 뷰**(하위 쓰레드 포함) 별도 소형 창 — 선택 종료·메모리 회수. - 주요 메모리 정리 프로그램(Mem Reduct·Windows Memory Cleaner·RAMMap 등)의 검증된 기능을 차용하되, **최대한 간단하게 설정**할 수 있게 한다. ## 2. 설계 원칙 0. **성능·동작 안정성 > 개발·배포 편의성 (DR-4, 사용자 확정 08-07)** — 모든 트레이드오프의 최상위 기준. 편의성 근거만으로 성능·안정성 열세안을 선택하지 않는다. 1. **자기 최소화가 정체성 (Self-minimal first)** — 도구 자신이 가장 가벼운 프로세스여야 한다. 예산 게이트(§3) 초과 시 기능 추가 금지. 2. **상주 셸 / 온디맨드 기능 분리** — 상주부는 트레이·관찰·트리거만. 무거운 기능은 필요 시 로드, 종료 시 회수([ADR-0003](08-adr-0003-resident-architecture.md)). 3. **안전한 회수 우선** — 시스템·보호 프로세스는 건드리지 않는다. 공격적 정리(스탠바이 전체 퍼지 등)는 기본 off, 부작용을 설정 UI에 명시([ADR-0002](07-adr-0002-memory-reclaim.md)). 4. **설정은 단순하게** — 자주 쓰는 것은 트레이 메뉴 토글, 나머지는 작은 설정 창 하나. 검증된 기본값 제공([05 §4](05-requirements.md)). 5. **진짜 포터블** — 설치·레지스트리 없이 단일 exe. 영속물은 exe 옆 `data\`(`nexa-dir2` DR-3 방식 계승, 쓰기 불가 시 `%LOCALAPPDATA%` 폴백). ## 3. 예산 목표 (✅ 확정 — DR-8, 사용자 승인 08-07) | 항목 | 목표 | 근거 | | --- | --- | --- | | 유휴 상주 RSS | **≤ 5MB** | Mem Reduct(~2-4MB) 동급. 메모리 도구의 신뢰 기준 | | 단일 exe 크기 | **≤ 3MB** | 포터블 배포·다운로드 부담 최소 | | 외부 DLL | **0** (OS 인박스 제외) | 진짜 포터블·의존성 0 | | 유휴 CPU | **~0%** — 관찰 폴링 ≥5초 또는 이벤트 구동 | 상주 비용 최소화 | | 기능 창 닫은 후 RSS | 유휴 수준 복귀(자기 워킹셋 트림) | §2-2 원칙 실증 | ## 4. 비차별화 (하지 않는 것) - 램디스크·페이지파일 관리·시작프로그램 관리 등 "종합 최적화" 확장 — 범위 밖. - 서비스(Windows Service) 상주 — 트레이 앱으로 충분, 권한 승격은 온디맨드. - 강제 상주 광고·백그라운드 텔레메트리 — 없음.