Belleği Optimize Et

Sorun bildir Kaynağı göster

Bu sayfada, Bazel'ın kullandığı belleğin nasıl sınırlandırılacağı ve azaltılacağı açıklanmaktadır.

Bazel Sınırlı RAM'le Çalıştırılıyor

Belirli durumlarda, Bazel'ın belleği minimum düzeyde kullanmasını isteyebilirsiniz. Maksimum yığını, başlangıç işaretini --host_jvm_args kullanarak ayarlayabilirsiniz (ör. --host_jvm_args=-Xmx2g).

Ancak derlemeleriniz yeterince büyükse Bazel, yeterli bellek olmadığında bir OutOfMemoryError (OOM) gönderebilir. Aşağıdaki komut işaretlerini ileterek Bazel'ın daha yavaş artımlı derlemeler pahasına daha az bellek kullanmasını sağlayabilirsiniz: --discard_analysis_cache, --nokeep_state_after_build ve --notrack_incremental_state.

Bu işaretler, gelecekteki derlemeleri standart artımlı derlemeye göre daha yavaş hale getirme pahasına, Bazel'in bir derlemede kullandığı belleği en aza indirir.

Bu işaretlemelerden herhangi birini tek tek de iletebilirsiniz:

  • --discard_analysis_cache, yürütme sırasında kullanılan belleği azaltır (analiz sırasında değil). Artımlı derlemelerin paket yüklemeyi yeniden yapması gerekmez ancak analiz ve yürütmeyi yeniden yapması gerekir (diskteki işlem önbelleği çoğu yeniden yürütme işlemini engelleyebilir).
  • --notrack_incremental_state, Bazel'in iç bağımlılık grafiğinde herhangi bir kenar depolamaz. Bu nedenle, artımlı derlemeler için kullanılamaz. Bir sonraki derleme bu verileri siler ancak --nokeep_state_after_build belirtilmezse dahili hata ayıklama için veriler bu tarihe kadar korunur.
  • --nokeep_state_after_build, derleme sonrasında tüm verileri sileceği için ek derlemelerin sıfırdan oluşturulması gerekir (disk üzerinde işlem önbelleği hariç). Tek başına, mevcut yapının yüksek su işaretini etkilemez.

Bellek Profili Oluşturma

Bazel, kuralınızın bellek kullanımını kontrol etmenize yardımcı olabilecek yerleşik bir bellek profil oluşturucuya sahiptir. Özel kuralların performansını iyileştirmeyle ilgili belgelerimizin Bellek Profili Oluşturma bölümünde bu işlem hakkında daha fazla bilgi edinebilirsiniz.