हॉटस्पॉट के लिए:
वस्तु हैडर एक निशान शब्द और एक klass सूचक के होते हैं।
निशान शब्दklass सूचक32 bit
आर्किटेक्चर पर शब्द आकार की है शब्द आकार (4 byte
32 पर बिट आर्किटेक्चर, 8 byte
64 पर बिट आर्किटेक्चर) और
है। 64 bit
आर्किटेक्चर पर क्लास पॉइंटर के पास शब्द का आकार होता है, लेकिन 4 byte
भी हो सकता है यदि ढेर पते को 4 bytes
में एन्कोड किया जा सकता है।
इस अनुकूलन को "संपीड़ित ओप्स" कहा जाता है और आप UseCompressedOops
विकल्प के साथ इसे नियंत्रित भी कर सकते हैं।
आप इस 1 के बारे में विकी प्रविष्टि भी पा सकते हैं।
शब्द वास्तव में कई चीजों के लिए उपयोग किया जाता है।
- एक
Biased Locking
2 है जिसके माध्यम से हॉटस्पॉट कुशल लॉकिंग को कार्यान्वित कर सकता है।
- यह
GC to set forward pointers
, और to store the age of the objects
के दौरान भी उपयोग किया जाता है। किसी वस्तु का पहचान हैश कोड चिह्न के अंदर संग्रहीत किया जा सकता है (System.identityHashCode
/Object.hashCode
एक)। // 32 bits:
// --------
// hash:25 ------------>| age:4 biased_lock:1 lock:2 (normal object)
// JavaThread*:23 epoch:2 age:4 biased_lock:1 lock:2 (biased object)
// size:32 ------------------------------------------>| (CMS free block)
// PromotedObject*:29 ---------->| promo_bits:3 ----->| (CMS promoted object)
//
// 64 bits:
// --------
// unused:25 hash:31 -->| unused:1 age:4 biased_lock:1 lock:2 (normal object)
// JavaThread*:54 epoch:2 unused:1 age:4 biased_lock:1 lock:2 (biased object)
// PromotedObject*:61 --------------------->| promo_bits:3 ----->| (CMS promoted object)
// size:64 ----------------------------------------------------->| (CMS free block)
//
// unused:25 hash:31 -->| cms_free:1 age:4 biased_lock:1 lock:2 (COOPs && normal object)
// JavaThread*:54 epoch:2 cms_free:1 age:4 biased_lock:1 lock:2 (COOPs && biased object)
// narrowOop:32 unused:24 cms_free:1 unused:4 promo_bits:3 ----->| (COOPs && CMS promoted object)
// unused:21 size:35 -->| cms_free:1 unused:7 ------------------>| (COOPs && CMS free block)
तुम भी OOP हेडर फाइल here पा सकते हैं:
markOop.hpp के स्रोत कोड है कि वास्तुकला के आधार पर लेआउट का वर्णन करता है में एक टिप्पणी है।
"OOP" * साधारण वस्तु सूचक के लिए खड़ा है * – user2418306