이 페이지에서는 Bazel이 사용하는 메모리를 제한하고 줄이는 방법을 설명합니다.
제한된 RAM으로 Bazel 실행
특정 상황에서는 Bazel이 최소한의 메모리를 사용하도록 할 수 있습니다. 시작 플래그
--host_jvm_args를 통해 최대 힙을 설정할 수 있습니다.
예: --host_jvm_args=-Xmx2g.
하지만 빌드가 충분히 크면 Bazel에 메모리가 부족할 때 OutOfMemoryError
(OOM)이 발생할 수 있습니다. 다음 명령어 플래그
--discard_analysis_cache,
--nokeep_state_after_build,
및
--notrack_incremental_state를 전달하여 증분 빌드의 속도를 늦추는 대신 Bazel이 메모리를 덜 사용하도록 할 수 있습니다.
이러한 플래그는 향후 빌드를 표준 증분 빌드보다 느리게 만드는 대신 빌드에서 Bazel이 사용하는 메모리를 최소화합니다.
다음 플래그 중 하나를 개별적으로 전달할 수도 있습니다.
--discard_analysis_cache는 분석이 아닌 실행 중에 사용되는 메모리를 줄입니다. 증분 빌드는 패키지 로드를 다시 실행할 필요가 없지만 분석 및 실행을 다시 실행해야 합니다 (단, 디스크 작업 캐시를 사용하면 대부분의 재실행을 방지할 수 있음).--notrack_incremental_state는 Bazel의 내부 종속성 그래프에 가장자리를 저장하지 않으므로 증분 빌드에 사용할 수 없습니다. 다음 빌드는 해당 데이터를 삭제하지만 내부 디버깅을 위해 보존됩니다.--nokeep_state_after_build가 지정되지 않는 한--nokeep_state_after_build는 빌드 후 모든 데이터를 삭제하므로 증분 빌드는 디스크 작업 캐시를 제외하고 처음부터 빌드해야 합니다. 단독으로는 현재 빌드의 최대치에 영향을 미치지 않습니다.
메모리 프로파일링
Bazel에는 규칙의 메모리 사용량을 확인하는 데 도움이 되는 기본 제공 메모리 프로파일러가 함께 제공됩니다. 맞춤 규칙의 성능을 개선하는 방법에 관한 문서의 메모리 프로파일링 섹션에서 이 프로세스에 관해 자세히 알아보세요.