Belleği Optimize Et

Sorun bildirin Kaynağı göster

Bu sayfada, Bazel'ın kullandığı belleği nasıl sınırlayıp azaltacağınız açıklanmaktadır.

Sınırlı RAM'e sahip Bazel'ı çalıştırma

Bazı durumlarda Bazel'ın çok az bellek kullanmasını isteyebilirsiniz. Maksimum yığını, başlangıç işareti --host_jvm_args aracılığıyla (ör. --host_jvm_args=-Xmx2g) ayarlayabilirsiniz.

Ancak yapılarınız yeterince büyükse Bazel yeterli belleği olmadığında OutOfMemoryError (OOM) fırlatabilir. Bazel'ın şu komut işaretlerini ileterek daha yavaş derleme maliyetiyle daha az bellek kullanmasını sağlayabilirsiniz: --discard_analysis_cache, --nokeep_state_after_build ve --notrack_incremental_state.

Bu işaretler, Bazel'ın gelecekteki derlemeleri standart bir ek derlemeden daha yavaş hale getirme maliyetiyle bir derlemede kullandığı belleği en aza indirecek.

Aşağıdaki işaretlerden herhangi birini tek tek de iletebilirsiniz:

  • --discard_analysis_cache, yürütme sırasında kullanılan belleği azaltır (analiz değil). Artımlı derlemelerin paket yüklemeyi tekrarlaması gerekmez, ancak analiz ve yürütme işlemini yeniden yapması gerekir (disk üzerindeki işlem önbelleği, çoğu yeniden yürütmeyi önleyebilir).
  • --notrack_incremental_state, Bazel'ın dahili bağımlılığı grafiğinde herhangi bir kenar depolamayacağından artımlı derlemeler için kullanılamaz. Bir sonraki derleme bu verileri siler ancak --nokeep_state_after_build belirtilirse dahili hata ayıklama için o zamana kadar korunur.
  • --nokeep_state_after_build derlemeden sonra tüm verileri siler. Bu sayede ek yapıların sıfırdan oluşturulması gerekir (disk içi işlem önbelleği hariç). Sadece, mevcut yapının yüksek su işaretini etkilemez.

Bellek Profili Oluşturma

Bazel, kuralınızın bellek kullanımını denetlemenize yardımcı olabilecek yerleşik bir bellek profilleyiciye sahiptir. Bu sürecin daha fazla bilgi edinmek için özel kuralların performansını iyileştirme konulu belgelerimizin Bellek Profili Oluşturma bölümüne göz atın.