मेमोरी ऑप्टिमाइज़ करें

इस पेज पर, Bazel के मेमोरी इस्तेमाल को सीमित करने और कम करने का तरीका बताया गया है.

कम रैम वाले सिस्टम पर Bazel का इस्तेमाल करना

कुछ स्थितियों में, आपको Bazel के लिए कम से कम मेमोरी का इस्तेमाल करना पड़ सकता है. स्टार्टअप फ़्लैग --host_jvm_args की मदद से, ज़्यादा से ज़्यादा हीप सेट किया जा सकता है. जैसे, --host_jvm_args=-Xmx2g.

हालांकि, अगर आपकी बिल्ड का साइज़ बहुत बड़ा है, तो हो सकता है कि Bazel के पास ज़रूरत के मुताबिक मेमोरी न होने पर, वह OutOfMemoryError (OOM) गड़बड़ी दिखाए. इन कमांड फ़्लैग को पास करके, Bazel को कम मेमोरी का इस्तेमाल करने के लिए सेट किया जा सकता है. हालांकि, इससे इंक्रीमेंटल बिल्ड की प्रोसेस धीमी हो जाएगी: --discard_analysis_cache, --nokeep_state_after_build, और --notrack_incremental_state.

इन फ़्लैग से, Bazel के बिल्ड में इस्तेमाल होने वाली मेमोरी कम हो जाएगी. हालांकि, इससे आने वाले समय में बिल्ड की प्रोसेस धीमी हो जाएगी. ऐसा इसलिए, क्योंकि स्टैंडर्ड इंक्रीमेंटल बिल्ड की तुलना में, ये फ़्लैग बिल्ड की प्रोसेस को धीमा कर देते हैं.

इनमें से किसी भी फ़्लैग को अलग-अलग भी पास किया जा सकता है:

  • --discard_analysis_cache से, एक्ज़ीक्यूशन के दौरान इस्तेमाल की गई मेमोरी कम हो जाएगी. हालांकि, इससे विश्लेषण के दौरान इस्तेमाल की गई मेमोरी कम नहीं होगी. इंक्रीमेंटल बिल्ड में, पैकेज को फिर से लोड करने की ज़रूरत नहीं होगी. हालांकि, उन्हें विश्लेषण और एक्ज़ीक्यूशन फिर से करना होगा. हालांकि, डिस्क पर मौजूद ऐक्शन कैश मेमोरी, ज़्यादातर मामलों में फिर से एक्ज़ीक्यूट होने से रोक सकती है.
  • --notrack_incremental_state Bazel के इंटरनल डिपेंडेंसी ग्राफ़ में कोई भी एज सेव नहीं करेगा, ताकि इसका इस्तेमाल इंक्रीमेंटल बिल्ड के लिए न किया जा सके. अगले बिल्ड में उस डेटा को खारिज कर दिया जाएगा. हालांकि, तब तक उसे सुरक्षित रखा जाता है, ताकि इंटरनल डीबग किया जा सके. ऐसा तब तक होता है, जब तक --nokeep_state_after_build के बारे में नहीं बताया जाता.
  • --nokeep_state_after_build, बिल्ड के बाद सारा डेटा मिटा देगा, ताकि इंक्रीमेंटल बिल्ड को शुरू से बनाना पड़े. हालांकि, डिस्क पर मौजूद ऐक्शन कैश को छोड़कर. इससे, मौजूदा बिल्ड के हाई-वॉटर मार्क पर कोई असर नहीं पड़ता.

मेमोरी प्रोफ़ाइलिंग

Bazel में पहले से मौजूद मेमोरी प्रोफ़ाइलर होता है. इससे आपको अपने नियम के लिए इस्तेमाल की गई मेमोरी की जांच करने में मदद मिल सकती है. इस प्रोसेस के बारे में ज़्यादा जानने के लिए, कस्टम नियमों की परफ़ॉर्मेंस को बेहतर बनाने के तरीके से जुड़े हमारे दस्तावेज़ के मेमोरी प्रोफ़ाइलिंग सेक्शन पर जाएं.