2015-10-29 4 views
13

निर्दिष्ट अवधि के दौरान जीसी रनों को कम से कम अक्षम करने के लिए कोई तरीका है (कम से कम समय लेने वाली जी, जैसे पुराने स्थान में जीसी इंटरप्ट्स), कुछ कोड संवेदनशील को निष्पादित करते समय देरी? इस तरह कुछ:थोड़ी देर के लिए node.js कचरा संग्रह अक्षम करें

disableGc(); 
runCodeWithoutDelays(); 
enableGc(); 

शायद कुछ नोड विकल्पों या मूल मॉड्यूल का उपयोग कर रहे हैं? या क्या मैं अपना खुद का मॉड्यूल लिख सकता हूं, क्या इसके लिए वी 8 में कोई एपीआई है?

+0

हमम, [यह] (https://github.com/bnoordhuis/node-idle-gc) आपके लिए काम करेगा? – thefourtheye

+0

वास्तव में नहीं। यह गैर-वृद्धिशील प्रमुख जीसी रन (मार्क-स्वीप-कॉम्पैक्ट) को ट्रिगर करेगा जो बहुत भारी है और तेज वृद्धिशील रनों की तुलना में लंबी देरी पेश करता है। जीसी चलाने के बजाए, मैं कुछ समय के लिए जीसी को अवरुद्ध करना चाहता हूं और इसे फिर से सामान्य ऑपरेशन में छोड़ देना चाहता हूं। – artch

+0

मैं इस प्रश्न को नोड.जेएस रेपो और वी 8 मेलिंग सूची में एक बग के रूप में बढ़ाने की सलाह दूंगा। – thefourtheye

उत्तर

3

जहां तक ​​मुझे पता है कि आप मैन्युअल रूप से v8 के कचरा कलेक्टर को नहीं रोक सकते हैं, केवल एक चीज जो आप कर सकते हैं, जीसी प्रक्रिया मैन्युअल रूप से global.gc() चल रही है लेकिन v8 की प्रक्रिया को रोक नहीं रही है।

0

एक अन्य व्यक्ति को एक ही सवाल था और GitHub पर एक मुद्दा प्रकाशित यहाँ: https://github.com/nodejs/help/issues/462

उत्तर आप नोड में जीसी अक्षम नहीं कर सकता है, लेकिन आप कम से कम स्मृति विकल्प tweak अधिकतम स्थान उपलब्ध उपयोग करने के लिए कर सकते हैं और - max_old_space_size, --max-semi-space-size का उपयोग करके जीसी में देरी।

संदर्भ में एक उदाहरण प्रदान किया गया है।

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