कई वीएम पर संदर्भ के आकार देशी सूचक आकार (यानी 32 बिट जेवीएम के लिए 32 बिट्स और 64 बिट्स के लिए 64 बिट्स) के लिए 32 बिट्स हैं, इसकी गारंटी नहीं है - और विशेष रूप से हॉटस्पॉट या तो अब करता है या जल्द ही समर्थन "Compressed Oops" जो 64 बिट JVM में 32 बिट संदर्भ हैं। (इसका मतलब यह नहीं है कि प्रत्येक संदर्भ संपीड़ित है - अधिक जानकारी के लिए लिंक किए गए आलेख को पढ़ें, और इसके बारे में बहुत सारे ब्लॉग पोस्ट भी हैं।)
किसी अन्य टिप्पणी के जवाब में, ध्यान दें कि संदर्भ स्वयं ही है आम तौर पर वस्तु को संबोधित करने का एक तरीका। चाहे वह प्रत्यक्ष मेमोरी पॉइंटर हो या नहीं, इसका लक्ष्य ऑब्जेक्ट के डेटा को प्राप्त करना है। यह मूल रूप से सभी वास्तव में मायने रखता है। अगर कुछ "अतिरिक्त" बिट्स हैं (उदाहरण के लिए यह 64-बिट संदर्भ है और आपको उस चौड़ाई की आवश्यकता नहीं है, तो ऑब्जेक्ट के स्थान का प्रतिनिधित्व करने के लिए) तो वीएम उस डेटा का उपयोग अन्य जानकारी जैसे कि इसके प्रकार के लिए कर सकता है, जो अनुमति दे सकता है कुछ अनुकूलन। (अधिक जानकारी के लिए टॉम की टिप्पणी देखें।)
ऑब्जेक्ट में केवल प्रकार की जानकारी होती है (शायद Class
के उदाहरण के संदर्भ में, या कुछ समान - मुझे पर्याप्त विवरण में नहीं पता) साथ ही अन्य ऑब्जेक्ट के लिए उपयोगकर्ता डेटा प्राप्त करने से पहले, हेडर में आवश्यक "सामान"।
स्रोत
2009-06-11 13:38:09
32 बिट्स बहुत अधिक प्रतीत नहीं होते हैं यदि इसमें प्रकार की जानकारी शामिल है? –
@pqism - संदर्भ स्वयं वास्तविक वस्तु के लिए सिर्फ एक सूचक है।प्रकार की जानकारी शेष ऑब्जेक्ट डेटा के साथ संग्रहीत की जाएगी। शायद एक बेहतर सवाल होगा "जावा वस्तु के लिए न्यूनतम आकार क्या है, और इसमें क्या शामिल है?" –
ठीक है, क्योंकि संकलन के बाद हम अब घोषित प्रकार की परवाह नहीं करते हैं? तो यह वास्तव में सिर्फ "उस पते पर कुछ" है। –