2011-03-16 21 views
7

मैं इस सूत्र garbage collection with node.js कि Node.js से सीखा है एक पीढ़ीगत जीसी उपयोग करता है।Node.js 'कचरा कलेक्टर

मैं नियमित रूप से चक्रीय वस्तु संदर्भ (जो दोनों के मेरे द्वारा हटाए जाने/अंत में क्षेत्र से बाहर जाना सुनिश्चित) और जानना चाहते हैं कि Node.js उन्हें अच्छी तरह से हैंडल करना चाहते हैं का उपयोग करें। तो उदाहरण के लिए। अगर यह रेफरी का उपयोग कर किया गया था। गिनती, एक समस्या होगी, इसलिए मैं जानना चाहता हूं कि इस पर कितना अच्छा नोड है।

कुछ उपयोग परिदृश्यों:

  1. हर http अनुरोध के लिए, मैं एक लैम्ब्डा जो संभवतः गुंजाइश वस्तुओं के लिए संदर्भ के साथ एक setTimeout पैदा करते हैं। गुंजाइश वस्तु भी प्रत्येक उपयोगकर्ता सत्र के लिए

  2. टाइमआउट वस्तु, आदि के लिए एक संदर्भ ... है, मैं एक सूचक है (अब भी कर रही सी प्रोग्रामिंग) जो भी करने के लिए संदर्भ हो http अनुरोध वस्तुओं के लिए संदर्भ सत्र वस्तु, आदि ... अनुरोध ऑब्जेक्ट्स अक्सर हटा दिए जाते हैं, लेकिन सत्र ऑब्जेक्ट नहीं है।

संपादित करें: मैं इस लिंक है कि मैंने पाया ऑनलाइन http://lifecs.likai.org/2010/02/how-generational-garbage-collector.html

उत्तर

10

आप उल्लेख किया है, NodeJS एक पीढ़ीगत जीसी का उपयोग करता है ... विशेष रूप से v8 की वजह से पूछो। और इसलिए, यह संदर्भ गणना प्रकार जीसी नहीं करता है। इसके बजाए, यह एक पूर्ण मार्क-एंड-स्वीप प्रकार जीसी करता है।

आप (एक दूसरे के लिए भले ही वे चक्रीय-ly बिंदु) वस्तुओं का एक सेट के सभी संदर्भ से छुटकारा पाने तो जब तक, वे कचरा कुछ बिंदु पर एकत्र किया जाना चाहिए।

मतलब यह नहीं है कि आप जी सी के बारे में परवाह नहीं करनी चाहिए। यदि आपके पास बहुत सक्रिय नोडजेएस सर्वर है, तो कचरा कलेक्टर आपके कचरे को साफ करने के लिए वास्तव में कड़ी मेहनत कर रहा है, खासकर यदि आपके पास बहुत से "मध्यम-जीवन-काल" वस्तुएं हैं (यानी छोटी या लंबी नहीं रहती)।

+0

धन्यवाद IPCNode देखें कोड। क्या आप जानते हैं कि node.js (v8) जीसी किसी अन्य थ्रेड में या उसी धागे पर चलाता है (जेएस निष्पादन के रूप में)? क्या आपके पास इसके लिए लिंक हैं जो मैं देख सकता हूं? – dhruvbird

+0

वही धागा। यह एक स्टॉप-द-वर्ल्ड पीढ़ी जीसी है ... लेकिन अधिकांश अन्य हैं। यहां कुछ जानकारी है [यहां] (http://code.google.com/apis/v8/embed.html#handles), लेकिन यह शायद आपके लिए उपयोगी नहीं है। यदि आप किसी चीज़ के बारे में चिंतित हैं, तो आप पहले .NET या जावा में उपयोग किए जाने वाले समाधानों को देखना चाहेंगे, वे जीसी के मामले में समान होंगे। और आप हमेशा स्टैक ओवरफ्लो पर विशिष्ट प्रश्न पूछ सकते हैं :) – Amir

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