소개
Mtuner은 C/C++ 메모리 프로파일러 및 메모리 누수 탐지 도구로, Windows에서 실행되는 데스크톱 애플리케이션입니다. 이 도구는 메모리 할당, 해제, 재할당의 전체 시간 기반 기록을 캡처하여 사용자가 타임라인 상의 어느 시점에서도 메모리 상태를 분석할 수 있도록 합니다. Milos Tosic이 개발했으며, BSD-2-Clause 라이선스 하에 오픈소스로 제공됩니다. 주요 기능으로는 메모리 누수 탐지, 자동 인사이트 탭, 풍부한 시각화, 심층 필터링, 태그 및 마커 지원, 저오버헤드 캡처, 심볼 해결, 대용량 캡처 최적화, 다중 테마 지원 등이 있습니다.
상세정보
전체 타임라인 기반 메모리 기록
Mtuner은 메모리 작업의 완전한 시간 기반 히스토리를 캡처합니다. 모든 할당, 재할당, 해제 작업과 함께 호출 스택, 스레드, 힙, 타임스탬프가 기록되어 사용자가 원하는 시점의 메모리 상태를 재생하고 분석할 수 있습니다.
메모리 누수 탐지
해제되지 않은 모든 메모리 블록을 누수로 식별하고, 해당 블록을 할당한 호출 스택을 함께 보고합니다. 이를 통해 개발자는 누수의 근본 원인을 빠르게 추적할 수 있습니다.
자동 인사이트 탭 (v5 신규)
캡처 파일을 로드하면 MTuner이 자동으로 데이터를 분석하여 다음과 같은 범주에서 순위별 인사이트를 제공합니다:
- 누수: 총 누수 메모리 및 최대 누수 위치
- 성장/피크: 지속적인 증가 추세 및 일시적 피크
- Churn 및 재할당: 짧은 수명의 블록을 대량으로 할당하는 사이트 및 반복적 재활용 버퍼
- 수명: 거의 즉시 해제되는 대용량 할당
- 스레드: 다른 스레드에서 해제된 블록 또는 할당 트래픽을 dominer하는 스레드
- Allocator/태그: 책keeping 오버헤드, dominante 힙, 소규모 할당 압력, 과도한 정렬 낭비, 태그 커버리지
풍부한 시각화 도구
메모리 사용량 타임라인/히스토그램, 호출 스택 트리, 트리 맵, 메모리 핫스팟 뷰 등을 통해 메모리 동작을 직관적으로 파악할 수 있습니다. 모든 시각화는 테마를 지원하며 다크 및 라이트 배경에서 가독성을 유지합니다.
다차원 필터링 및 그룹화
호출 스택, 모듈, 알локатор/힙, 스레드, 태그, 크기별로 메모리 작업을 그룹화하고 필터링할 수 있습니다. 이를 통해 특정 컨텍스트에서의 메모리 행동을 고립시켜 분석할 수 있습니다.
태그 및 마커 지원
사용자는 타임라인에 이름 있는 스코프와 이벤트를 주석으로 달아 애플리케이션의 로직 흐름과 메모리 동작을 correlate할 수 있습니다. 예를 들어 레벨 로딩, AI 업데이트, 렌더링 파이프라인 시작 등을 표시하여 메모리 급증의 원인을 찾을 수 있습니다.
저오버헤드 캡처 라이브러리
rmem 캡처 라이브러리는 프로파일링 대상 프로세스에 주입되거나 SDK를 통해 링크되어 작동합니다. 각 메모리 작업과 함께 호출 스택을 기록하고, LZ4 압축을 사용하여 백그라운드 스레드에서 디스크로 스트리밍함으로써 프로파일링 대상 애플리케이션의 성능에 미치는 영향을 최소화합니다.
신뢰할 수 있는 심볼 해결
Windows에서는 DIA와 마이크로소프트 공용 심볼 서버를 통해 PDB를 다운로드하여 함수/파일/줄 정보를 해결합니다. GCC/Clang 툴체인에서는 addr2line과 nm을 사용합니다. 이를 통해 캡처된 메모리 작업이 실제 소스 코드의 어느 위치에서 발생했는지 정확히 알 수 있습니다.
대용량 캡처 최적화
메모리 작업은 48바이트 컴팩트한 레코드로 저장되며, VM 백드 아레나와 멀티스레드 분석을 통해 수백만 개의 작업이 포함된 대용량 캡처도 빠르게 로드하고 분석할 수 있습니다. 이로 인해 RAM 사용량이 크게 줄어듭니다.
테마 및 현지화 지원
MTuner Dark, Monokai, Shanghai Night, Bright Owl, Wise Green 등 5가지 내장 테마를 제공하며, 모든 그래프, 트리 맵, 히스토그램이 테마를 인식합니다. 또한 UI 텍스트는 번역 가능하여 다양한 언어 환경에서 사용할 수 있습니다.
다운로드·설치 방법
공식 GitHub 저장소의 Releases 페이지에서 사전 빌드된 Windows 바이너리를 ZIP 형식으로 다운로드할 수 있습니다. 다운로드 후 압축을 해제하고 폴더 내의 MTuner.exe를 실행하면 됩니다. 일부 백신 소프트웨어가 캡처 라이브러리 주입을 방해할 수 있으므로, 문제가 발생하면 MTuner 폴더를 바이러스 및 위협 방지 설정의 제외 목록에 추가하는 것이 권장됩니다.
기본 사용법/명령어
애플리케이션 프로파일링에는 두 가지 방법이 있습니다:
- 주입 모드 (Windows): MTuner 데스크톱 애플리케이션을 실행하고 프로파일링할 실행 파일을 지정하면, 해당 프로세스에 캡처 라이브러리를 주입하여 메모리 작업을 기록합니다. 이 방법은 대상 애플리케이션을 다시 빌드할 필요가 없습니다.
- SDK 통합: rmem 라이브러리를 애플리케이션에 직접 링크하여 크로스플랫폼 캡처를 수행합니다. 이 방식은 콘솔, Android 등 다른 플랫폼에서도 사용 가능하며, 캡처 파일은 나중에 Windows의 MTuner에서 분석할 수 있습니다.
지원 환경·시스템 요구사항
MTuner 데스크톱 애플리케이션은 현재 Windows에서만 완전히 기능합니다. Linux 및 macOS용 빌드는 소스에서 컴파일 가능하지만, 분석 기능은 아직 구현 중입니다. 캡처 라이브러리(rmem)는 Windows(주입 또는 SDK 링크), Linux, macOS, Android, PlayStation 4/3 등에서 작동하며, 캡처 파일은 플랫폼에 관계없이 이동 가능하여 한 플랫폼에서 캡처하고 다른 플랫폼(현재는 Windows)에서 분석할 수 있습니다.
최신 버전·업데이트
현재 최신 버전은 5.0이며, 주요 변경 사항은 위에 설명된 Insights 탭 추가, 로딩 성능 개선, 테마 개선, 안정성 강화 등으로 구성됩니다. 자세한 변경 사항은 GitHub 저장소의 What’s new in version 5 섹션을 참조하십시오.
제한 사항·확인 사항
MTuner 데스크톱 애플리케이션은 Linux 및 macOS에서 실행할 수 있지만, 현재 분석 기능은 구현되지 않았으므로 실질적인 사용은 Windows에 한정됩니다. 캡처를 수행하려면 대상 애플리케이션에 디버그 심볼이 이용 가능해야 심볼 해결이 정확하게 작동합니다. 심볼이 없으면 호출 스택이 함수 이름 대신 주소로만 표시될 수 있습니다. 일부 백신 소프트웨어는 메모리 주입 기법을 차단할 수 있으므로, 프로파일링 중 충돌이 발생하면 예외 목록 추가를 고려해야 합니다.
화면으로 보는 주요 기능
메모리 사용량 그래프 및 할당 통계

이 스크린샷은 'Memory usage' 그래프를 보여주며, 이는 시간에 따른 메모리 사용량을 시각화한다. 그래프는 2GB 이하의 메모리 사용량을 나타내는 파란색 선으로 구성되어 있으며, 'Start time: 22s 42ms', 'End time: 26s 30ms', 'Duration: 6s 26ms' 등의 시간 정보가 표시된다. 그래프 아래에는 '45b 844ms'라는 텍스트가 있으며, 오른쪽 하단에는 'Global histogram'이라는 제목의 막대 그래프가 있다. 이 그래프는 메모리 할당 크기 분포를 보여주며, 'Scale to peaks' 체크박스가 있다.
메모리 할당 및 모듈 정보

이 스크린샷은 'Memory tag tree'와 'Modules' 두 개의 주요 정보 영역을 보여준다. 'Memory tag tree'는 'Usage', 'Peak Usage', 'Overhead', 'Peak Overhead' 등의 카테고리로 나뉘어 있으며, 'Root'와 '0x2067474B…'와 같은 태그별 메모리 사용량을 나열하고 있다. 오른쪽에는 'Modules' 탭이 열려 있으며, 'Name', 'Base Address', 'End Address', 'Size', 'Path' 등의 열을 가진 테이블이 있다. 이 테이블은 'MTunerDLL.dll', 'ADVAPE32.dll', 'bcp4312.dll' 등의 DLL 파일과 그들의 메모리 주소, 크기, 경로를 나열하고 있다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


