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