इस पेज पर, 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_stateBazel के इंटरनल डिपेंडेंसी ग्राफ़ में कोई भी एज सेव नहीं करेगा, ताकि इसका इस्तेमाल इंक्रीमेंटल बिल्ड के लिए न किया जा सके. अगले बिल्ड में उस डेटा को खारिज कर दिया जाएगा. हालांकि, तब तक उसे सेव रखा जाता है, ताकि इंटरनल डीबग किया जा सके. ऐसा तब तक होता है, जब तक- --nokeep_state_after_buildके बारे में जानकारी न दी गई हो.
- --nokeep_state_after_build, बिल्ड के बाद सारा डेटा मिटा देगा, ताकि इंक्रीमेंटल बिल्ड को शुरू से बनाना पड़े. हालांकि, डिस्क पर मौजूद ऐक्शन कैश को छोड़कर. इससे, मौजूदा बिल्ड के हाई-वॉटर मार्क पर कोई असर नहीं पड़ता.
मेमोरी प्रोफ़ाइलिंग
Bazel में मेमोरी प्रोफ़ाइलर पहले से मौजूद होता है. इससे, अपने नियम के लिए इस्तेमाल की गई मेमोरी की जांच की जा सकती है. इस प्रोसेस के बारे में ज़्यादा जानने के लिए, कस्टम नियमों की परफ़ॉर्मेंस को बेहतर बनाने के तरीके से जुड़े हमारे दस्तावेज़ के मेमोरी प्रोफ़ाइलिंग सेक्शन पर जाएं.