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.