Belleği Optimize Et

Sorun bildirme Kaynağı görüntüleme Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

Sınırlı RAM ile Bazel çalıştırma

Bazı durumlarda Bazel'in minimum bellek kullanmasını isteyebilirsiniz. Maksimum yığın boyutunu --host_jvm_args=-Xmx2g gibi bir başlangıç işareti --host_jvm_args aracılığıyla ayarlayabilirsiniz.

Ancak derlemeleriniz yeterince büyükse Bazel yeterli belleğe sahip olmadığında OutOfMemoryError (OOM) hatası verebilir. Aşağıdaki komut işaretlerini ileterek Bazel'in daha az bellek kullanmasını sağlayabilirsiniz. Bu durumda, artımlı derlemeler daha yavaş olur: --discard_analysis_cache, --nokeep_state_after_build ve --notrack_incremental_state.

Bu işaretler, Bazel'in bir derlemede kullandığı belleği en aza indirir. Bunun karşılığında, sonraki derlemeler standart artımlı derlemelerden daha yavaş olur.

Bu işaretlerden herhangi birini tek tek de iletebilirsiniz:

  • --discard_analysis_cache, yürütme sırasında kullanılan belleği (analiz sırasında değil) azaltır. Artımlı derlemelerde paket yükleme işleminin yeniden yapılması gerekmez ancak analiz ve yürütme işleminin yeniden yapılması gerekir (diskteki işlem önbelleği çoğu yeniden yürütme işlemini önleyebilir).
  • --notrack_incremental_state, Bazel'in dahili bağımlılık grafiğinde herhangi bir kenar depolamaz. Bu nedenle, artımlı derlemeler için kullanılamaz. Sonraki derleme bu verileri atar ancak --nokeep_state_after_build belirtilmediği sürece dahili hata ayıklama için o zamana kadar korunur.
  • --nokeep_state_after_build, derleme işleminden sonra tüm verileri siler. Böylece, ek derlemelerin sıfırdan oluşturulması gerekir (disk üzerindeki işlem önbelleği hariç). Bu durum, mevcut derlemenin en yüksek noktasını tek başına etkilemez.

Bellek Kullanımı Profilleme

Bazel, kuralınızın bellek kullanımını kontrol etmenize yardımcı olabilecek yerleşik bir bellek profilleyici içerir. Özel kuralların performansını artırmayla ilgili dokümanlarımızın Bellek Profilleme bölümünde bu işlem hakkında daha fazla bilgi edinebilirsiniz.