2016-06-03 10 views
6

नोडजेएस को फ़ंक्शन की आवश्यकता होती है, जो मॉड्यूल लोड करता है, इसमें "कैश" होता है (जो एक ऑब्जेक्ट होता है)।क्या नोड की कैश कचरा की आवश्यकता होती है?

प्रविष्टियां यह है कि जब मैं मॉड्यूल का उपयोग नहीं कर रहा हूं तो इस कैश को कचरा इकट्ठा किया जाता है? (यदि फिर से इस्तेमाल किया डिस्क से लोड हो रहा है जिसका परिणाम)

मुझे लगता है कि जवाब है "नहीं", लेकिन मैं नहीं वेब

उत्तर

7

प्रविष्टियां इस कैश कचरा एक बार एकत्र कर रहे हैं है पर किसी भी संदर्भ नहीं मिले किया अब मैं मॉड्यूल मॉड्यूल का उपयोग नहीं कर रहा हूं?

नहीं require() के साथ लोड मॉड्यूल अनिश्चित काल तक कैश किए गए हैं चाहे आप उनका उपयोग कर रहे हों या नहीं।

मॉड्यूल द्वारा उपयोग किए जाने वाले जावास्क्रिप्ट चर/ऑब्जेक्ट्स के लिए मेमोरी कचरा संग्रह के सभी सामान्य नियमों के अधीन एकत्रित कचरा है (जब कोई लाइव कोड नहीं है जिसमें अभी भी चर/ऑब्जेक्ट का संदर्भ है)। लेकिन, मॉड्यूल कैश लोड किए गए मॉड्यूल के लिए एक संदर्भ रखता है ताकि कोड या किसी भी मॉड्यूल स्तर चर कचरे से एकत्र न हों जब तक कि मॉड्यूल को कैश से मैन्युअल रूप से हटाया न जाए।

विषय पर link to the node.js doc है।

कैशिंग

मॉड्यूल पहली बार वे लोड किए गए हैं के बाद कैश नहीं किया जाता। यह का अर्थ है (अन्य चीजों के साथ) कि प्रत्येक कॉल की आवश्यकता है ('foo') ठीक उसी वस्तु को वापस कर देगा, अगर यह उसी फ़ाइल को हल करेगा।

आप मैन्युअल रूप से कैश से एक मॉड्यूल को निकालना चाहते हैं, कि यहाँ वर्णित है:

unloading code/modules

हालांकि, इस तरह से दिए गए, सभी मॉड्यूल-स्तर चर कचरा एकत्र हो सकेंगे node.js संरचित है मुझे नहीं लगता कि यह वास्तव में स्मृति से कोड को उतार देगा।

संबंधित मुद्दे