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