평소처럼 작업하던 중 Mac이 멈추고, 시스템에서 응용 프로그램용 메모리가 부족하니 사용하지 않는 앱을 종료하라는 창이 나타납니다. 이어서 일시 중지된 앱이 표시된 강제 종료 목록이 뜹니다. 혼란스러운 점은 이 현상이 16GB나 32GB 메모리를 가진 Mac에서도, 저장 공간이 넉넉한 드라이브에서도 일어난다는 것입니다. 원본 안내는 MacHabits에서 나왔습니다.
이 메시지는 사실 RAM이 얼마나 많은지와는 크게 상관이 없습니다. Golden Gate에서는 특정 Mac에서 예전보다 더 쉽게 나타날 수도 있습니다. 아래에서는 무엇이 원인이 되는지, 그리고 원인을 빠르게 찾는 방법을 설명합니다. 시작하기 전에 앱 호환성을 확인하고, 운영 체제를 바꾸기 전에 복원할 수 있는 백업을 준비하십시오.
이 경고가 실제로 의미하는 것
Apple Silicon Mac은 CPU와 GPU가 하나의 통합 메모리 풀을 공유합니다. 앱이 풀의 용량보다 더 많은 메모리를 필요로 하면 macOS는 사용하지 않는 메모리를 압축한 뒤, 일부를 시동 디스크의 스왑 파일로 옮깁니다. 이 조합 덕분에 Mac은 물리 메모리로 짐작되는 것보다 훨씬 많은 일을 처리할 수 있으며, 활동 상태 보기의 ‘사용된 메모리’가 아무 문제 없이도 높게 나타나는 일이 많은 이유가 여기에 있습니다.
이 경고는 그 체계가 감당하지 못할 때 나타납니다. 그런 일이 생기는 경로는 두 가지입니다.
원인 1: 스왑에 쓸 여유 저장 공간 부족
스왑은 시동 디스크에 있습니다. 여유 공간이 줄어들면 macOS는 더 이상 스왑 파일을 만들 수 없고, 메모리는 갈 곳을 잃습니다. Apple 커뮤니티의 오랜 전문가들은 여유 저장 공간이 적으면 디스크가 기술적으로 가득 차기 훨씬 전에도 경고가 나타날 수 있다고 조언합니다. 앱이 가상 메모리를 많이 요청할 때 특히 그렇습니다.
원인 2: 엄청난 양의 가상 메모리를 요청하는 프로세스
여유 공간이 충분한 사람을 혼란스럽게 하는 것이 바로 이 원인입니다. 앱이 macOS에 메모리 주소 공간을 요청하면 커널은 이를 추적하기 위해 페이지 테이블을 만들고, 이 페이지 테이블은 스왑으로 내보낼 수 없는 메모리에 있습니다. 프로세스에 누수가 있어 주소 공간을 해제하지 않은 채 계속 요청하면 테이블이 커지다가 다른 용도로 쓸 실제 메모리가 남지 않게 됩니다. 그러면 드라이브에 공간이 있어도 경고가 나타납니다.
실제로는 두 번째 원인은 대개 앱 하나입니다. 누수가 있는 탭이 열린 브라우저, Electron 앱, 컨테이너 런타임, 가상 머신, 결함이 있는 백그라운드 에이전트 등입니다.
지금 바로 해결하기
경고가 화면에 떠 있는 동안에는 다음과 같이 합니다.
- 강제 종료 목록을 읽습니다. 비정상적으로 많은 메모리를 쓰는 앱은 사용량과 함께 표시됩니다. 가장 큰 숫자가 첫 번째 용의자입니다.
- 잃어도 되는 앱 중 가장 무거운 것을 종료합니다. 응답한다면 먼저 작업을 저장하십시오. 브라우저와 가상 머신이 흔한 후보입니다.
- 메모리 압력을 지켜봅니다. 활동 상태 보기의 메모리 탭에서 확인합니다. 그래프가 다시 녹색이 되면 당장의 위기는 넘긴 것입니다. 재시동은 필요하지 않습니다.
진짜 원인 찾기
Mac이 다시 반응하면, 무엇이 경고를 일으켰는지 5분 동안 찾아내십시오. 그러지 않으면 다시 나타납니다.
메모리순으로 정렬합니다. 활동 상태 보기에서 메모리 탭을 클릭하고 보기 > 모든 프로세스를 선택한 다음, 메모리 열로 정렬합니다. 상위 다섯 개를 기록해 둡니다.
증가하는지 지켜봅니다. 10분 뒤에 다시 확인합니다. 사용하지 않는데도 계속 커지는 프로세스는 누수의 유력한 후보입니다.
터미널에서 정확한 값을 확인합니다.
top -o mem -l 1 -n 10 -stats pid,command,mem
그런 다음 의심 가는 프로세스를 프로세스 ID로 더 자세히 살펴봅니다.
footprint -p 1234
vmmap --summary 1234 | tail -20
1234를 PID로 바꾸십시오. footprint는 그 프로세스가 실제로 차지하는 메모리 양을 보여 줍니다. vmmap --summary는 예약해 둔 가상 주소 공간의 양을 보여 줍니다. 풋프린트는 작은데 가상 크기가 엄청나게 큰 프로세스는 바로 원인 2의 패턴입니다.
스왑과 저장 공간을 확인합니다.
sysctl vm.swapusage
ls -lh /System/Volumes/VM
df -h /System/Volumes/Data
스왑 파일이 크고 계속 늘어나는 데다 여유 공간까지 적다면 원인 1입니다. 공간이 충분한데도 경고가 나타난다면 원인 2입니다.
흔한 원인과 대처법
탭이 많은 브라우저. Chromium 기반 브라우저는 탭이나 확장 프로그램마다 별도의 프로세스를 실행합니다. 오작동하는 탭 하나가 끝없이 커질 수 있습니다. 브라우저 자체의 작업 관리자로 찾아내고 확장 프로그램을 점검하십시오.
Electron 및 웹 기반 앱. 웹 기술로 만든 채팅, 협업, AI 데스크탑 앱은 자체 브라우저 엔진을 내장하고 있습니다. 여러 개를 동시에 실행하면 메모리의 큰 부분을 차지할 수 있고, 긴 세션에서 누수가 생기는 경우도 있습니다. 수정되기 전까지는 매일 종료했다가 다시 여는 것이 현실적인 임시 방법입니다.
컨테이너 및 가상 머신 앱. Docker Desktop과 가상화 도구는 가상 머신용으로 메모리를 예약합니다. 설정을 열어 할당량을 실제로 필요한 만큼으로 낮추십시오.
아직 macOS 27에 맞게 업데이트되지 않은 앱. Tahoe에서는 문제없던 앱도 새 OS 릴리스에서는 누수가 생길 수 있습니다. 업데이트를 확인하고, 특정 앱이 계속 원인이라면 개발자에게 알리십시오.
시스템 프로세스. 가장 상위에 Apple 프로세스가 있다면 재시동하고, 업그레이드 후 인덱싱이 끝날 때까지 기다리십시오. 그래도 다시 발생한다면 피드백 어시스턴트로 sysdiagnose를 첨부해 보고하십시오.
Golden Gate에서 256GB Mac이 더 취약한 이유
여기서 원인 1과 업그레이드가 만납니다.
256GB 드라이브를 쓰는 Mac에서는 Golden Gate가 차지하는 공간이 쌓입니다. 새 시스템, 많은 사용자가 Apple이 밝힌 7GB를 훨씬 넘는다고 보는 Apple Intelligence 모델, 업그레이드 후 일시적으로 부풀어 오른 시스템 데이터, 그리고 Time Machine 로컬 스냅숏입니다. 이들이 차지하는 기가바이트만큼 스왑이 쓸 수 있는 기가바이트는 줄어듭니다.
직접 측정한 것은 아니지만 논리는 단순합니다. Tahoe에서 여유 공간 30GB로 무리 없이 돌아가던 Mac이, 똑같은 앱을 실행해도 Golden Gate에서 여유 공간이 12GB가 되면 경고를 만날 수 있습니다. 용량이 작은 드라이브에서 경고가 보인다면 무엇보다 먼저 여유 공간을 확인하십시오.
드라이브의 최소 15~20%는 비워 두십시오. 256GB Mac이라면 대략 40~50GB입니다. 안전하게 그만큼 확보하는 방법은 저장 공간 가이드에서 다룹니다.
예방하기
- 여유 공간을 건강하게 유지합니다. 특히 주요 업그레이드 후에 신경 쓰십시오.
- 가끔 재시동합니다. 가동 시간이 길어지면 느린 누수가 쌓입니다.
- 로그인 시 실행되는 항목을 줄입니다. 시스템 설정 > 일반 > 로그인 항목 및 확장 프로그램에서 설정합니다.
- 사용된 메모리가 아니라 메모리 압력을 봅니다. 가끔 노란색이 되는 것은 정상입니다. 빨간색이 잦다면 작업량이 메모리를 넘어섰거나 무언가 누수가 생기고 있는 것입니다.
- 반복되는 원인은 보고합니다. 개발자가 구체적인 보고를 받으면 누수가 수정됩니다.
이 단계의 원본은 macOS 27의 응용 프로그램 메모리 부족 경고에 관한 MacHabits 가이드에서 볼 수 있습니다.
요약
- 이 경고는 메모리와 스왑이 감당하지 못한다는 뜻이며, 반드시 RAM이 작다는 뜻은 아닙니다.
- 원인 1: 스왑에 쓸 여유 저장 공간 부족. 원인 2: 엄청난 양의 가상 메모리를 예약하는 프로세스.
- 강제 종료 목록에서 가장 큰 앱을 종료한 다음, 활동 상태 보기,
footprint,vmmap으로 진짜 원인을 찾습니다. - Golden Gate를 쓰는 256GB Mac에서는 먼저 여유 공간을 확인합니다.
이 경고에 대해 더 보기: MacHabits의 ‘macOS 27의 응용 프로그램 메모리 부족’ 해설.
출처: https://machabits.info/articles/run-out-of-application-memory-macos-27