本页面介绍如何使用标志来运行 RAM 有限的 Bazel。
在某些情况下,您可能希望 Bazel 使用最少的内存。您可以通过启动标志 --host_jvm_args
(例如 --host_jvm_args=-Xmx2g
)设置最大堆。
不过,如果您的 build 足够大,Bazel 可能会在内存不足时抛出 OutOfMemoryError
(OOM)。您可以传递以下命令标志,减少 Bazel 使用的内存量,但增量构建速度较慢:--discard_analysis_cache
、--nokeep_state_after_build
--notrack_incremental_state
。
这些标志可最大限度地减少 Bazel 在构建过程中使用的内存,但代价是以后的构建会比标准增量构建慢。
您也可以单独传递以下任一标志:
--discard_analysis_cache
会减少执行期间(而非分析)使用的内存。增量构建不必重做软件包加载,但必须重做分析和执行(尽管磁盘操作缓存可以阻止大多数重新执行工作)。--notrack_incremental_state
不会将任何边缘存储在 Bazel 的内部依赖关系图中,因此它对于增量构建不可用。下一个 build 将舍弃该数据,但在此之前会保留这些数据,以便在内部调试时使用,除非指定了--nokeep_state_after_build
。--nokeep_state_after_build
将在构建后舍弃所有数据,以便增量构建必须从头开始构建(磁盘操作缓存除外)。它不会影响当前建筑的高水位标志。