macOS의 com.apple.Virtualization.VirtualMachine 프로세스는 Apple Virtualization Framework가 VM을 구동할 때 실제 하이퍼바이저 작업을 전담하는 XPC 서비스로, 할당된 게스트 OS 메모리 전량을 호스트 RAM에 고정 점유합니다.
활성 상태 보기에서 해당 프로세스가 3.99 GB처럼 수 GB 단위의 점유가 발생한다면, Docker Desktop, OrbStack, UTM 등 Virtualization Framework를 사용하는 앱이 VM에 메모리를 할당한 채 실행 중인 상태입니다. 해당 앱을 종료하면 프로세스도 종료되고 메모리가 반환됩니다.
단, 이 프로세스는 System Volume 내부의 XPC 서비스(/System/Library/Frameworks/Virtualization.framework/…/com.apple.Virtualization.VirtualMachine.xpc)이므로, Activity Monitor에서 단독으로 표시될 뿐 어느 앱이 기동했는지가 바로 보이지 않습니다.
이 경우, 화성 상태 보기에서 계층 뷰를 전환하거나 터미널에서 ps aux 명령어를 통해 어떤 앱이 백그라운드에서 실행 중인지 특정할 수 있습니다.
com.apple.Virtualization.VirtualMachine 메모리 점유 구조
Apple Virtualization Framework는 macOS Big Sur(11) 이후 Intel·Apple Silicon 양쪽에서 사용 가능한 네이티브 가상화 API입니다.
앱이 VM 시작을 요청하면 약 0.3초 후 이 XPC 서비스가 Virtual Machine Service로 기동되고, CPU 코어 수, 가상 메모리 크기, Virtio 장치(스토리지·네트워크·사운드 등), Metal 렌더러까지 VM 전체 상태를 이 단일 프로세스가 관리합니다.
메모리 점유량이 크게 보이는 이유는 구조상의 특성 때문입니다. VM 구성 시 지정한 게스트 RAM이 호스트 메모리에 Wired(고정) 상태로 예약되기 때문에, Activity Monitor Memory 탭에서 “실물 RAM을 그만큼 사용 중”으로 표시됩니다. 3.99 GB가 표시됐다면 해당 VM에 약 4 GB가 할당된 것입니다.
이 XPC 서비스를 직접 호출할 수 있는 앱은 Apple이 관리하는 private entitlement를 보유한 프로세스로 제한됩니다. 실제로 이 프로세스를 기동하는 앱은 다음과 같습니다.
| 앱 | VM 엔진 | 특이사항 |
|---|---|---|
| Docker Desktop | Apple Virtualization Framework (기본값, macOS 12.5+) | Docker 4.x부터 기본 활성화 |
| OrbStack | Apple Virtualization Framework | 경량 최적화 Linux VM |
| UTM | Virtualization Framework 또는 QEMU 선택 가능 | 설정에 따라 다름 |
| Parallels Desktop | 자체 하이퍼바이저 + Virtualization.framework 혼용 | 버전에 따라 다름 |
| VirtualBuddy / Viable | Apple Virtualization Framework | macOS/Linux VM 전용 |
| Tart / Lima | Apple Virtualization Framework | CI/CD 자동화 도구 |
Apple Simulator(Xcode)는 별도의 Simulator.framework를 사용하므로 이 프로세스와 무관합니다.
1. 활성 상태 보기에서 Virtual Machine Service사용 앱 확인하기

Virtual Machine Service의 메모리가 과도하게 높다면, 활성 상태 보기를 실행한 다음, 메뉴 막대에서 보기 > 모든 프로세스(계층 표시)에 진입해 어떤 앱이 사용 중인지 확인할 수 있습니다.

계층 구조 보기로 전환되면 launchd 아래에 모든 프로세스가 트리 형태로 나열됩니다. 우측 상단 검색창에 VirtualMachine을 입력하면 해당 XPC 프로세스만 필터링되고, 들여쓰기 위쪽의 부모 항목이 이 서비스를 기동한 앱을 가리킵니다.
필자의 경우, 생각치도 못한 Cloud 앱에서 com.apple.Virtualization.VirtualMachine 프로세스를 사용 중이였으며, 검색해보니 클로드 앱 내부에서 코드를 작성(실행)할 때 가상화를 사용한다고 하네요.
macOS는 XPC 서비스의 responsible process를 기반으로 트리를 구성하므로, launchd가 명목상 부모여도 Activity Monitor 계층 뷰에서는 실제 호출 앱 하위에 표시됩니다.
가령 Docker Desktop이 원인이라면 com.docker.backend → com.apple.Virtualization.VirtualMachine 순으로 보입니다.
2. 터미널 명령어로 가상화 프로세스 호출 앱을 특정하기
활성 상태 보기에서 확인이 어렵거나, GUI 없이 터미널 환경에서 점검해야 할 때는 2가지 명령어를 통해 com.apple.Virtualization.VirtualMachine 프로세스를 호출하는 앱을 특정할 수 있습니다. 앱 이름을 전혀 모르는 상태를 가정합니다.

Step 1. VirtualMachine 프로세스의 PID를 확인합니다.
pgrep -a VirtualMachine
출력 예시
15524
출력되는 숫자(15524)가 이후 단계에서 사용할 PID입니다.
Step 2. 해당 PID의 responsible path를 조회합니다. macOS는 XPC 서비스를 launchd가 대리 기동하더라도, 실제 호출한 앱의 정보를 responsible pid와 responsible path로 내부에 기록합니다.
sudo launchctl procinfo 15524 | grep responsible
15524 자리에 Step 1에서 얻은 실제 PID를 넣습니다.
출력 예시
responsible pid = 57709
responsible unique pid = 2346109
responsible path = /Applications/Claude.app/Contents/MacOS/Claude
responsible path가 VirtualMachine XPC 서비스를 실제로 기동한 앱의 전체 경로입니다. 활성 상태 보기의 계층 표시가 내부적으로 이 값을 사용해 트리를 구성하므로, 두 방법의 결과는 항상 일치합니다.
3. 원인 앱별 메모리 조정 방법
com.apple.Virtualization.VirtualMachine 프로세스의 과도한 메모리 점유 원인을 제공하는 앱을 파악한 뒤, 각 앱의 VM 메모리 설정을 줄이면 메모리 점유량이 감소합니다.
Docker Desktop: Docker Desktop > Settings > Resources > Memory 슬라이더로 VM 메모리 상한을 조정합니다. macOS 기준 기본값은 물리 RAM의 절반으로 설정되므로, 16 GB Mac이라면 8 GB가 초기값입니다. 개발 용도라면 4 GB → 2 GB로 낮춰도 대부분의 컨테이너 작업에 지장이 없습니다. 설정 변경 후 Apply & Restart를 눌러야 반영됩니다.
OrbStack: 메뉴바 아이콘 클릭 → Settings > Resources에서 Memory 값을 조정합니다. OrbStack은 사용 중인 컨테이너나 Linux 머신이 없으면 VM을 자동으로 일시 중단하므로, 완전 종료하지 않아도 메모리가 해제됩니다.
UTM: UTM 앱 내 해당 VM 설정 → System > Memory에서 숫자를 직접 입력합니다. Virtualization Framework 모드와 QEMU 에뮬레이션 모드는 메모리 사용 방식이 달라, 같은 설정값이라도 실제 점유량 차이가 있습니다.
Parallels Desktop: Parallels Desktop > 환경 설정 > VM 하드웨어 > 메모리에서 조정합니다. Parallels는 자체 하이퍼바이저와 Apple Virtualization Framework를 혼용하는 버전에 따라 이 프로세스가 표시되지 않을 수 있습니다.
이 방법이 안 된다면, 앱을 완전히 종료하는 것이 가장 확실합니다. com.apple.Virtualization.VirtualMachine 프로세스는 VM이 종료되면 즉시 사라집니다.
마치며
com.apple.Virtualization.VirtualMachine은 Apple Virtualization Framework의 XPC 서비스로, 메모리 점유 자체는 VM에 할당된 게스트 RAM이 그대로 반영된 수치입니다.
Docker Desktop, OrbStack 같은 개발 도구뿐 아니라 Claude Desktop의 Cowork 기능도 이 프로세스를 기동합니다.
이 프로세스가 독립적으로 메모리를 낭비하는 것이 아니라 상위 앱이 지정한 VM 메모리 크기가 그대로 표시되는 구조이므로, 메모리를 점유하는 앱을 종료하는 것이 가장 직접적인 해결책입니다.
FAQ
아무 가상화 앱도 실행하지 않았는데 이 프로세스가 보입니다.
백그라운드 자동 실행으로 기동된 경우입니다. Docker Desktop은 macOS 로그인 항목에 등록되면 사용자가 의식하지 않아도 데몬이 VM을 띄웁니다. 시스템 설정 > 일반 > 로그인 항목 및 확장 프로그램에서 확인하고, 불필요한 항목을 비활성화하면 재부팅 후 자동 기동이 차단됩니다.
VM 메모리를 줄였는데도 Activity Monitor에 동일한 수치가 보입니다.
설정 변경 후 VM을 완전히 재시작해야 반영됩니다. Docker Desktop은 Apply & Restart, OrbStack은 앱 재시작, UTM은 VM 전원 끄기 후 다시 켜기가 필요합니다. macOS가 Wired 메모리를 즉시 해제하지 않고 잠시 유지하는 경우도 있으므로, 재시작 후 30초 정도 대기 후 수치를 재확인합니다.
Claude Desktop Cowork 사용 후 메모리가 해제되지 않습니다.
Cowork는 세션이 끝나도 VM을 종료하지 않고 대기 상태로 유지합니다. 여러 대화가 VM 인스턴스를 공유하는 구조이기 때문입니다. 설정에서 메모리 상한을 줄이는 옵션이 없으므로, 메모리를 즉시 회수하려면 Claude Desktop을 완전히 종료하는 것이 가장 확실합니다. 재실행 후 Cowork 탭에 진입하지 않으면 VM은 다시 뜨지 않습니다.



