इस पेज पर, Bazel की मेमोरी को सीमित करने और उसे कम करने का तरीका बताया गया है.
सीमित रैम के साथ बेज़ल चलना
कुछ स्थितियों में, आप Bazel को कम स्टोरेज का इस्तेमाल करने की सलाह दे सकते हैं. आप स्टार्टअप फ़्लैग
--host_jvm_args
,
जैसे कि --host_jvm_args=-Xmx2g
के ज़रिए ज़्यादा से ज़्यादा हीप सेट कर सकते हैं.
हालांकि, अगर आपके बिल्ड काफ़ी बड़े हैं, तो Bazel में OutOfMemoryError
(OOM) का इस्तेमाल नहीं किया जा सकता. ऐसा तब होता है, जब उसमें ज़रूरत के मुताबिक मेमोरी नहीं होती. नीचे दिए गए कमांड फ़्लैग को पास करके, आप बेज़ल को कम मेमोरी में
खर्च करके कम मेमोरी का इस्तेमाल कर सकते हैं:
--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 में पहले से ऐसा मेमोरी प्रोफ़ाइलर मौजूद होता है जिसकी मदद से आप नियम की मेमोरी इस्तेमाल कर सकते हैं. कस्टम नियमों की परफ़ॉर्मेंस को बेहतर बनाने के तरीके से जुड़े हमारे दस्तावेज़ के मेमोरी प्रोफ़ाइलिंग सेक्शन में इस प्रक्रिया के बारे में ज़्यादा पढ़ें.