निम्न उदाहरण लें:जावा अंतिम स्थानीय चर कहाँ संग्रहीत हैं?
public void init() {
final Environment env = new Environment();
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
env.close();
}
});
}
सबसे पहले, env
कहां संग्रहीत है? क्या यह है:
- कंपाइलर द्वारा आंतरिक कक्षा के एक छिपे हुए सदस्य चर में प्रतिलिपि बनाई गई है जो संदर्भित करता है कि
- प्रतिलिपि बनाई गई है, और ढेर पर
- ढेर पर संदर्भित है और किसी भी तरह से संदर्भित
- कुछ और
मेरा अनुमान पहला विकल्प है।
दूसरा, ऐसा करने से उत्पन्न होने वाले किसी भी प्रदर्शन मुद्दे (क्लास के सदस्य चर के रूप में env
बनाने और इसे संदर्भित करने के बजाए) विशेष रूप से यदि आप ऐसी आंतरिक कक्षा संरचनाओं की बड़ी संख्या बना रहे हैं जो अंतिम स्थानीय संदर्भ चर।
तो क्या मुझे लगता है कि ऐसा करने से उत्पन्न कोई प्रदर्शन समस्या नहीं है? – Joel
इस क्षेत्र में मेरा निजी पालतू शिखर यह है कि बाहरी उदाहरण के संदर्भ (खेतों तक पहुंचने के लिए उपयोग किए जाने वाले चर, चर नहीं हैं) एक समस्या हो सकती है, यदि उनकी आवश्यकता नहीं है: http://stackoverflow.com/questions/ सदस्य चर के रूप में संदर्भित करने की तुलना में 758570/यह संभव-से-बना-अज्ञात-आंतरिक-कक्षा-इन-जावा-स्थिर – Thilo
है। यदि इसकी प्रतिलिपि बनाई गई है, तो, मेरी धारणा यह है कि कोई प्रदर्शन प्रभाव नहीं है। – Joel