यह निर्भर करता है। जब आप गैर-अभिनेता कोड से किसी अभिनेता को संदेश भेजते हैं, तो एक अभिनेताप्रॉक्सी स्वचालित रूप से थ्रेड स्थानीय में बनाई जाती है और संग्रहीत होती है। यह एक संभावित स्मृति रिसाव बनाता है, यद्यपि बहुत छोटा है, क्योंकि जब तक थ्रेड GC'd नहीं होता है तब तक ActorProxy GC'd नहीं होगा। ActorProxy अनिवार्य रूप से गैर-अभिनेता धागे को कई तरह से एक अभिनेता की तरह व्यवहार करने में सक्षम बनाता है, जिसमें संदेश प्राप्त करना शामिल है।
बड़ी समस्या यह है कि अगर आपका धागा प्रबंधित हो रहा है, तो अभिनेता लाइब्रेरी थ्रेड का प्रबंधन करने के तरीके के समान है, ताकि एक तार्किक संदर्भ का प्रतिनिधित्व करने वाले एक समय में एक थ्रेड पर हो, और दूसरी बार एक और धागे पर हो। इसका एक अच्छा उदाहरण एक सर्वलेट कंटेनर होगा। आपका तार्किक संदर्भ एक सर्वलेट या सत्र हो सकता है, लेकिन ActorProxy थ्रेड के लिए बाध्य होने जा रहा है, और इस प्रकार तार्किक संदर्भों में साझा किया जाता है। यदि आपके अभिनेता अभिनेताप्रोक्सी का जवाब नहीं दे रहे हैं तो यह इतना बड़ा सौदा नहीं है, लेकिन यदि वे हैं तो यह समस्याएं पैदा करेगा क्योंकि या तो (ए) जवाब गलत संदर्भ से प्राप्त होंगे, या (बी) संदेश कभी प्राप्त नहीं होते हैं, और इस प्रकार पहले उल्लिखित छोटे रिसाव बड़े हो जाते हैं क्योंकि अभिनेताप्रॉक्सिस के मेलबॉक्स भर जाते हैं।
[संपादित करें] हम्म ... मुझे प्रश्न पढ़ने में कोई समस्या है! अभिनेता ब्लॉक में घूमते हुए एक नया अभिनेता ऑब्जेक्ट बनाता है जो इसे समाप्त होने पर ठीक से जीसी किया जाएगा। ध्यान रखें कि एक अभिनेता ब्लॉक में संदेश भेजने का मतलब है कि संदेश भेजना एक और धागे पर एक नई प्रतिक्रिया में किया जाएगा, न कि अभिनेता बनाने वाले थ्रेड में।
स्रोत
2009-06-30 11:23:02
ग्रेट उत्तर, एरिक, धन्यवाद। क्या "अभिनेता {}" ब्लॉक (जैसे मेरे प्रश्न में) में आमंत्रण लपेटना एक ही समस्या से पीड़ित है? या बनाया गया अभिनेता जीसी-सक्षम है जब ब्लॉक निकलता है, भले ही धागा रहता है या नहीं? –