मुझे एक व्यापक स्रोत नहीं मिला जो स्पष्ट रूप से अवधारणा को समझाएगा। मेरी समझ यह है कि एक थ्रेड को ईडन में स्मृति का कुछ हिस्सा दिया जाता है जहां यह नई वस्तुओं को आवंटित करता है। एक प्रतिस्पर्धी धागा ईडन के कुछ हद तक लगातार होने वाला होगा। क्या होता है यदि पहला धागा अपने टीएलबी में मुक्त क्षेत्र से बाहर हो जाता है? क्या यह ईडन के एक नए हिस्से का अनुरोध करेगा?एक TLAB (थ्रेड स्थानीय आवंटन बफर) क्या है?
उत्तर
एक TLAB के विचार धागे के बीच तुल्यकालन की जरूरत को कम किया जा सके। टीएलबी का उपयोग करके, यह आवश्यकता कम हो जाती है क्योंकि किसी थ्रेड में ऐसा क्षेत्र होता है जिसका उपयोग यह कर सकता है और उम्मीद करता है कि यह इस क्षेत्र का उपयोग करने वाला एकमात्र धागा है। यह मानते हुए कि एक TLAB 100 ऑब्जेक्ट्स रख सकता है, एक थ्रेड को केवल 101 ऑब्जेक्ट आवंटित करते समय अधिक स्मृति का दावा करने के लिए लॉक प्राप्त करने की आवश्यकता होगी। टीएलबी के बिना, यह हर वस्तु के लिए आवश्यक होगा। नकारात्मकता निश्चित रूप से है कि आप संभावित रूप से अंतरिक्ष बर्बाद कर सकते हैं।
बड़े वस्तुओं आम तौर पर एक TLAB के बाहर आवंटित किए जाते हैं वे सिंक्रनाइज़ स्मृति आवंटन की आवृत्ति को कम करने का लाभ शून्य के रूप में। कुछ वस्तुएं एक टीएलबी के अंदर भी फिट नहीं हो सकती हैं।
आप -XX:TLABSize
ध्वज का उपयोग कर एक TLAB का आकार सेट कर सकते हैं लेकिन आम तौर पर मैं आपको इन सेटिंग्स के साथ गड़बड़ करने की सलाह नहीं देता जबतक कि आपको वास्तव में कोई समस्या नहीं मिली है जिसे आप हल कर सकते हैं।
धन्यवाद। 1) जब कोई धागा एक टीएलबी आवंटित करता है तो उसे अभी भी एक लॉक प्राप्त करना होता है ताकि एक प्रतिस्पर्धी धागा उसी क्षेत्र में एक TLAB आवंटित नहीं करेगा जो पहले धागे ने किया था। क्या यह धारणा सही है? 2) क्या TLAB के बाहर किसी ऑब्जेक्ट को आवंटित करना हमेशा महंगा होता है क्योंकि प्रत्येक नई ऑब्जेक्ट को आवंटित करने के लिए लॉक को अधिग्रहित किया जाना चाहिए जो TLAB में फिट नहीं है? धागा 1 एक TLABfrom का दावा करने का – user1745356
Think 99 और धागा 2 के लिए 0 ऑफसेट से ऑफसेट 100 199 अनुबंध का कहना है कि एक बार बताया करने के लिए, धागा 2 0-99 में आवंटित नहीं कर सकता और धागा 1 100-199 में आवंटित नहीं कर सकता एक का दावा। कोई भी थ्रेड इस स्पेस को भविष्य के आवंटन बफर के रूप में दावा नहीं कर सकता है। इस तरह, प्रत्येक थ्रेड सिंक्रनाइज़ किए बिना 100 ऑब्जेक्ट्स आवंटित कर सकता है यदि प्रत्येक ऑब्जेक्ट काल्पनिक स्लॉट में से एक लेता है। एक टीएलबी के बाहर आवंटित करना बहुत महंगा नहीं है लेकिन यह स्पष्ट रूप से एक टीएलबी के भीतर से अधिक महंगा है क्योंकि इसे अन्य धागे के साथ संचार की आवश्यकता होती है जो एक साथ चल सकती है। –
क्षमा करें, अगर मेरा प्रश्न स्पष्ट नहीं है, तो मैं इसे एक और तरीके से रखने की कोशिश करूंगा - यदि दो प्रतिस्पर्धी धागे अगले 100 वस्तुओं के लिए स्मृति आवंटित करना चाहते हैं और अगला उपलब्ध स्मृति पता 100 से शुरू हो रहा है तो पहला व्यक्ति जो प्राप्त करता है लॉक को 100 से 199 तक पते मिलेगा और दूसरा धागा 200 - 29 9 मिलेगा। क्या यह सही है? – user1745356
- 1. थ्रेड-विशिष्ट ढेर आवंटन
- 2. cython.parallel: थ्रेड-स्थानीय ndarray बफर कैसे शुरू करें?
- 3. जीसीसी मेमोरी आवंटन समस्या - बफर ओवरफ्लो हमला
- 4. "आवंटन संदर्भ" क्या है?
- 5. बफर क्या है?
- 6. आलसी आवंटन क्या है?
- 7. गो बाइट्स है। बफर थ्रेड-सुरक्षित?
- 8. जावा कैश्ड थ्रेड पूल और थ्रेड स्थानीय
- 9. थ्रेड सुरक्षित स्थानीय चर
- 10. गठबंधन स्मृति आवंटन क्या है?
- 11. थ्रेड स्थानीय निकालने विधि
- 12. मेमोरी आवंटन सुझाव
- 13. फ्लास्क ढांचे में थ्रेड स्थानीय अर्थ क्या है?
- 14. एक स्थानीय थ्रेड के माध्यम से एक अन्य थ्रेड के माध्यम से, यह संभव है कि
- 15. पायथन में थ्रेड-स्थानीय मान का जीवनकाल क्या है?
- 16. स्टोर बफर क्या है?
- 17. थ्रेड सुरक्षा और स्थानीय चर
- 18. थ्रेड स्थानीय स्टोरेज मेमोरी उपयोग
- 19. क्या "एकल आवंटन" बढ़ावा ::
- 20. जावा आवंटन स्मृति आवंटन
- 21. क्या थ्रेड। कंटेंट थ्रेड हमेशा एक ही उदाहरण लौटाता है?
- 22. पाइथन बफर प्रकार क्या है?
- 23. क्या BeginInvoke() एक अलग थ्रेड चलाता है?
- 24. यह गतिशील आवंटन क्या करता है?
- 25. स्टैक आवंटन विफल रहता है और ढेर आवंटन सफल होता है !! क्या यह संभव है?
- 26. __declspec (थ्रेड) के साथ थ्रेड स्थानीय भंडारण C++/CLI
- 27. एम्बेडेड प्लेटफ़ॉर्म पर थ्रेड क्लास मेमोरी आवंटन विषमता
- 28. क्या जावा में थ्रेड समूह-स्थानीय चर हैं?
- 29. "इनलाइन थ्रेड" क्या है?
- 30. थ्रेड-पूल क्या है?
आपके अंतिम प्रश्न के बारे में, मुझे लगता है कि थ्रेड के लिए एक नया TLAB आवंटित किया जाता है। छोटे मेमोरी टुकड़ों की बजाय टीएलबी आवंटित करने के बारे में सोचें, जैसे कि सरल ऑप्टिमाइज़ेशन ताले की आवश्यकता के बजाय अक्सर काम थ्रेड स्थानीय बनाते हैं। – maaartinus