2012-10-12 11 views
7

के भीतर परिभाषित किया गया है, मैं सिर्फ उत्सुक हूं।
मान लीजिए कि मैं थोड़ी देर के अंदर/लूप के लिए एक संदर्भ परिभाषित करता हूं।जावा: संदर्भ एक लूप

क्या JVM इस संदर्भ को प्रत्येक पुनरावृत्ति को परिभाषित करता है, या इसे केवल एक बार परिभाषित करने के लिए अनुकूलित किया गया है?

+2

आपका क्या मतलब है, "परिभाषित करें"? यह वास्तव में निर्भर करता है कि आपका क्या मतलब है। परिवर्तनीय हर बार पुन: प्रारंभ किया जाएगा, लेकिन स्मृति स्थान शायद पुन: उपयोग किया जाएगा। –

+1

"संदर्भ परिभाषित करें" से आपका क्या मतलब है? कड़ाई से बोलते हुए, संदर्भ वैरिएबल का मान है, जो ऑब्जेक्ट आवंटित करने से बहुत रोना है। उन दो व्याख्याओं के बहुत अलग जवाब हैं। –

उत्तर

7

यह हर बार परिभाषित करता है और केवल उस लूप पुनरावृत्ति के लिए स्कॉप्ड होता है।

जैसे ही लूप पुनरावृत्ति पूर्ण हो गया, यह जीसी के लिए योग्य है।

लुई वासरमैन ने टिप्पणी की, वैरिएबल हर बार फिर से शुरू किया जाएगा, लेकिन स्मृति स्थान शायद पुन: उपयोग किया जाएगा।

+0

धन्यवाद। – socksocket

+0

जानने के लिए अच्छा आपका स्वागत है। – kosa

+0

यह जीसी के लिए योग्य नहीं होगा। स्टैक स्लॉट तब तक अस्तित्व में रहेगा जब तक कि लूप के बाद घोषित बाद वाले चर द्वारा पुन: उपयोग नहीं किया जाता है, यदि कोई हो, अन्यथा विधि बाहर निकलने तक। लूप के समापन ब्रेस के अनुरूप कोई JVM निर्देश नहीं है, इसलिए JVM को यह जानने का कोई तरीका नहीं है कि स्लॉट अब उपयोग में नहीं है। – EJP

2

यह हर बार परिभाषित किया गया है। इसके लिए (मेरे ज्ञान के लिए) कोई अनुकूलन नहीं है।

1

-संदर्भ को परिभाषित करता है हर पाश दोहराता है, लेकिन संदर्भ के दायरे केवल कि यात्रा से जुड़ी है।

- पर विचार करें आप पाश बाहर एक संदर्भ घोषित किया है, लेकिन असाइन वस्तु इसे करने के लिए अंदर पाश, तो संदर्भ एक ही रहता है, लेकिन यह नई वस्तु को संदर्भित हर में उस प्रकार के यात्रा।

4

संदर्भ प्रत्येक पुनरावृत्ति पर परिभाषित किया गया है। कोड को देशी कोड में अनुकूलित करने के बाद, इसे लूप के बाहर ले जाया जा सकता है, इसलिए इसका प्रदर्शन प्रभाव नहीं पड़ता है। यदि आप प्रत्येक बार new ऑब्जेक्ट पर यह संदर्भ सेट करते हैं, तो यह प्रत्येक पुनरावृत्ति पर एक नई वस्तु बना सकता है जब तक कि उस ऑब्जेक्ट सृजन को भी अनुकूलित नहीं किया गया हो।

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