प्रैक्टिस में प्रसिद्ध जावा कंसुरेंसी, सेक्शन 2.4 में, यह कहता है कि आंतरिक लॉकिंग दृष्टिकोण, स्पष्ट ताले के खिलाफ एक खराब डिजाइन निर्णय था क्योंकि यह भ्रमित और "... यह ऑब्जेक्ट आकार और लॉकिंग के बीच व्यापार करने के लिए जेवीएम कार्यान्वयन को मजबूर करता है प्रदर्शन।" क्या कोई व्यक्ति कृपया बता सकता है कि ऑब्जेक्ट आकार प्रभाव प्रदर्शन को लॉक कर रहा है?ऑब्जेक्ट आकार और लॉकिंग प्रदर्शन जावा के बीच कोई संबंध है?
उत्तर
ठीक है क्योंकि प्रत्येक ऑब्जेक्ट को लॉक किया जा सकता है, इसका मतलब यह है कि लॉक होने पर हमें आवश्यक सभी जानकारी को स्टोर करने के लिए प्रत्येक ऑब्जेक्ट में पर्याप्त स्थान होना चाहिए।
यह अपेक्षाकृत अपरिहार्य है क्योंकि विशाल, विशाल बहुसंख्यक वस्तुओं को कभी भी बंद नहीं किया जाएगा, इसलिए हम बहुत सारी जगह बर्बाद कर रहे हैं। तो अभ्यास में हॉटस्पॉट ऑब्जेक्ट की स्थिति रिकॉर्ड करने और इन दो बिट्स के आधार पर शेष ऑब्जेक्ट हेडर का पुन: उपयोग करने के लिए 2 बिट्स का उपयोग कर हल करता है।
फिर पूरी पक्षपातपूर्ण/गैर-पक्षपातपूर्ण लॉकिंग सामग्री है .. ठीक है आप इसके बारे में here पढ़ना शुरू कर सकते हैं। हॉटस्पॉट प्रलेखन वह नहीं है जिसे मैं व्यापक रूप से कॉल करता हूं, लेकिन लॉकिंग और ऑब्जेक्ट हेडर अधिकांश बाकी हिस्सों की तुलना में बेहतर प्रतिनिधित्व करते हैं। लेकिन संदेह में: स्रोत कोड पढ़ें।
पीएस: हमें हर ऑब्जेक्ट के मूल हैशकोड के साथ भी एक ही समस्या है। "बस मेमोरी एड्रेस का उपयोग करें" यदि आपका जीसी शफ़ल करता है तो बहुत अच्छा नहीं है। (लेकिन लॉक करने के विपरीत कोई वास्तविक विकल्प नहीं है - अगर हम यह कार्यक्षमता चाहते हैं)
जानकारी के लिए धन्यवाद, मूल रूप से इसके सभी प्राचीन सिंक्रनाइज़ेशन के बारे में, – meer
लॉक करने के लिए उपयोग की जाने वाली विशेष वस्तु के आकार के बावजूद क्या आपको उन बयानों के साथ जाने के लिए कुछ विशिष्टताएं मिली हैं? "बहुत सा स्थान? लॉक करते समय किस जानकारी की आवश्यकता है? – Toby
@Toby अच्छी तरह से कम से कम टीआईडी और एक रिकर्सन काउंटर। विवरण के लिए आपको हॉटस्पॉट स्रोत में भारी लॉक कक्षाओं को देखना होगा। यह ध्यान में रखते हुए कि यह प्रत्येक ऑब्जेक्ट में जोड़ा गया है, फिर भी 1-2 शब्द "बहुत सारी जगह" हैं। – Voo
सबसे कुशल ताले देशी शब्द आकार का उपयोग करते हैं उदा। 32-बिट फ़ील्ड। हालांकि आप प्रत्येक ऑब्जेक्ट में 4 बाइट्स जोड़ना नहीं चाहते हैं, इसलिए AFAIK 1 बिट का उपयोग किया जाता है, हालांकि इस बिट को सेट करना अधिक महंगा है जो शब्द का आकार निर्धारित करता है।
हम्म हम सीएएस के बिना ऐसा कर सकते हैं भले ही हम शब्द के आकार वाले फ़ील्ड का उपयोग करें? यदि नहीं, तो यह मूल रूप से केवल + बिट शफलिंग + सीएएस बनाम सीएएस पढ़ता है - शायद वह बुरा नहीं है, लेकिन अभी भी धीमा है। – Voo
@Voo मेरे अनुभव में खराब नहीं है क्योंकि 'सिंक्रनाइज़' के रूप में जेआईटी द्वारा अनुकूलित किया जा सकता है, लॉक नहीं है। –
मैं सिंक्रनाइज़ कार्यान्वयन के बारे में बात कर रहा हूं। भले ही हम एक शब्दकोष लॉकिंग हेडर का इस्तेमाल करते हैं, फिर भी हमें एक सीएएस की आवश्यकता होगी जो थोड़ा शफल करने पर हावी हो, इसलिए वहां बहुत अंतर नहीं है। हम शायद एक दूसरे के पीछे बात कर रहे हैं। – Voo
- 1. एनम और गणना के बीच संबंध क्या है, यदि कोई
- 2. क्या आरटीटीआई और अपवादों के बीच कोई संबंध है?
- 3. सिस्टम के बीच संबंध। ऑब्जेक्ट क्लास और स्ट्रक्चर
- 4. सदस्यता यूज़र और आईप्रिनियर ऑब्जेक्ट के बीच संबंध
- 5. प्रदर्शन के बीच कोई अंतर और प्रदर्शन ब्लॉक
- 6. क्या डीबग और रिलीज के बीच कोई (प्रदर्शन) अंतर है?
- 7. मास्क टॉबाउंड्स और कोनेराइडियस के बीच संबंध क्या है?
- 8. समर्थन वेक्टरों और प्रशिक्षण डेटा और वर्गीकरण प्रदर्शन की संख्या के बीच संबंध क्या है?
- 9. जावा में ऑब्जेक्ट के आकार की गणना
- 10. आकार का जावा ऑब्जेक्ट
- 11. किसी ऑब्जेक्ट पर लॉकिंग
- 12. log4j और apache.commons.logging के बीच संबंध
- 13. मैवेन और मेरे आवेदन के बीच संबंध क्या है?
- 14. के बीच क्या अंतर है? और जावा जेनरिक में ऑब्जेक्ट?
- 15. क्या जावाक डीबग के बीच में कोई प्रदर्शन अंतर है?
- 16. जावा ऑब्जेक्ट सीरियलाइजेशन प्रदर्शन युक्तियाँ
- 17. पार्सिंग, हाइलाइटिंग और समापन के बीच संबंध
- 18. पोर्ट और आईपी पते के बीच संबंध
- 19. जीईएफ और जीएमएफ के बीच संबंध?
- 20. फ़्लॉपिंग और मेटा-स्थिरता के बीच संबंध
- 21. क्या "ऑब्जेक्ट [] x" और "ऑब्जेक्ट एक्स []" के बीच कोई अंतर है?
- 22. असेंबली भाषा और मशीन भाषा के बीच संबंध क्या है?
- 23. बेयसियन और तंत्रिका नेटवर्क के बीच संबंध क्या है?
- 24. जीसी, अंतिमकरण() और निपटान के बीच संबंध क्या है?
- 25. जावा डबल चेक लॉकिंग
- 26. जावा में लॉकिंग प्रभाव
- 27. सी और विंडोज एपीआई के बीच संबंध क्या है?
- 28. जावा कंसुरेंसी: सीएएस बनाम लॉकिंग
- 29. सक्रिय निर्देशिका समूहों और एक्सचेंज में समूहों के बीच संबंध क्या है, यदि कोई है?
- 30. ऑब्जेक्ट और * के बीच अंतर?
'सिंक्रनाइज़ किए गए' प्रकार के ताले के साथ आकार (मेरे कार्यान्वयन से मेरे अनुभव से) के साथ कोई संबंध नहीं होना चाहिए, और जावा 5 की संक्षिप्त समीक्षा से लॉकिंग योजना, मैं नहीं देखता कि वहां पर निर्भरता कैसे हो सकती है। अलग-अलग 'लॉक' ऑब्जेक्ट्स को लागू करने के लिए यह शारीरिक रूप से अधिक संग्रहण लेता है, लेकिन यह एक निश्चित ओवरहेड होना चाहिए। –
@ होट्लिक्स जो मुझे आश्चर्यचकित करता है, आकार shudnt कोई अतिरिक्त ओवरहेड है, धन्यवाद! – meer