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

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

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

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

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

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