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

समस्या की शिकायत करें सोर्स देखें

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

सीमित रैम के साथ Bazel का इस्तेमाल करना

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

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