कॉम्पैक्ट स्ट्रिंग्स (Java 9)
कॉम्पैक्ट स्ट्रिंग्स Java 9 में पेश किए गए थे ताकि Java 6 के कंप्रेस्ड स्ट्रिंग्स को प्रतिस्थापित किया जा सके। इसका कार्यान्वयन char[] के बजाय byte[] ऐरे का उपयोग करता है, और एक नया coder फील्ड जोड़ता है जो पहचानता है कि स्ट्रिंग LATIN1 (1 बाइट प्रति कैरेक्टर) या UTF-16 (2 बाइट्स प्रति कैरेक्टर) फॉर्मेट में है।
कंप्रेस्ड स्ट्रिंग्स (Java 6)
कंप्रेस्ड स्ट्रिंग्स Java 6 में पेश किए गए थे जो एक बाइट प्रति कैरेक्टर के लिए byte[] ऐरे का उपयोग करते थे, और दो बाइट्स प्रति कैरेक्टर के लिए char[] ऐरे का उपयोग जारी रखते थे। इसे -XX:+UseCompressedStrings फ्लैग से सक्षम किया जाता था।
मुख्य अंतर
- अनपैकिंग/रीपैकिंग: कंप्रेस्ड स्ट्रिंग्स के विपरीत, कॉम्पैक्ट स्ट्रिंग्स को अनपैकिंग या रीपैकिंग की आवश्यकता नहीं होती, जिससे रनटाइम पर बेहतर प्रदर्शन मिलता है।
- डिफ़ॉल्ट स्थिति: कंप्रेस्ड स्ट्रिंग्स Java 6 में डिफ़ॉल्ट रूप से सक्षम नहीं थे, जबकि कॉम्पैक्ट स्ट्रिंग्स Java 9 में डिफ़ॉल्ट रूप से सक्षम हैं (इसे -XX:-CompactStrings से निष्क्रिय किया जा सकता है)।
कमांड तुलना
// Java 6 - कंप्रेस्ड स्ट्रिंग्स सक्षम करने के लिए
-XX:+UseCompressedStrings
// Java 9 - कॉम्पैक्ट स्ट्रिंग्स निष्क्रिय करने के लिए
-XX:-CompactStrings
कॉम्पैक्ट स्ट्रिंग्स मेमोरी उपयोग को अनुकूलित करते हैं और आधुनिक एप्लिकेशंस के लिए अधिक कुशल हैं।