HeadlinesBriefing favicon HeadlinesBriefing.com

JDK 28 वैल्यू क्लासेस प्रीव्यू फीचर्स ऑप्टिमाइज़ेशन

Hacker News •
×

यह पोस्ट JDK 28 में प्रीव्यू फीचर्स पर चर्चा करती है, विशेष रूप से JEP 401, एक प्रमुख Valhalla मील का पत्थर जिसे प्रीव्यू फीचर के रूप में एकीकृत किया गया है। वैल्यू क्लासेस प्रोग्राम सेमेन्टिक्स और JVM के लिए उपलब्ध ऑप्टिमाइज़ेशन अवसरों को संप्रेषित करने की क्षमता बढ़ाती हैं। हालांकि, यह विश्वास कि सामान्य क्लासेस एक प्रदर्शन आधार प्रदान करती हैं और वैल्यू क्लासेस इससे नीचे नहीं जा सकतीं, निराधार है। एक अच्छे इरादे वाला प्रोग्राम JVM को मजबूर कर सकता है कि जब मेथड्स इंटरैक्ट करें तो फ्लैटेंड और रेफरेंस रिप्रेजेंटेशन के बीच कन्वर्ट करे, जो लाभों को नकार सकता है। वैल्यू क्लासेस का मुख्य ऑप्टिमाइज़ेशन लाभ पहचान छोड़ना है, जिससे रनटाइम को उपयुक्त प्रतिनिधित्व चुनने, पॉइंटर चेज़िंग से बचने के लिए वैल्यूज़ को फ्लैट करने, और कंपोनेंट्स को रजिस्टर्स या स्टैक पर स्केलराइज़ करने की अनुमति मिलती है। पहचान की आवश्यकता के बिना एस्केप एनालिसिस तुच्छ हो जाता है। इम्यूटेबिलिटी फ्लैटिंग को सक्षम बनाती है; JEP 539, स्ट्रिक्ट फील्ड इनिशियलाइज़ेशन, JVM को एक फाइनल फील्ड पर भरोसा करने देता है जो इसके एनक्लोज़िंग ऑब्जर्वेबल बनने से पहले इनिशियलाइज़ हो जाता है। चूंकि ऐसा फील्ड बाद में अपडेट नहीं किया जा सकता, JVM टॉर्न असाइनमेंट को जोखिम में डाले बिना नॉन-एटॉमिक फ्लैटेड लेआउट का उपयोग कर सकता है। म्यूटेबल फील्ड्स को टियर-फ्री असाइनमेंट बनाए रखना चाहिए। यदि एक म्यूटेबल फील्ड में ऐसा वैल्यू है जो एटॉमिक फ्लैटेड अपडेट के लिए बहुत बड़ा है, तो JVM को रेफरेंस लेआउट का उपयोग करना होगा। 32 बाइट्स पेलोड वाले Four Longs रिकॉर्ड पर विचार करें; एटॉमिक फ्लैटेड अपडेट के लिए बहुत बड़ा। लेकिन Envelope रिकॉर्ड में, पेलोड एक सख्ती से इनिशियलाइज़्ड फाइनल फील्ड है, जो नॉन-एटॉमिक फ्लैटेड लेआउट की अनुमति देता है। यदि Envelope म्यूटेबल होता, तो लेआउट कंसिस्टेंसी बनाए रखने के लिए REGULAR पर वापस आ जाता।