कॉम्पैक्ट स्ट्रिंग्स अवलोकन
Java 9 से, JVM कॉम्पैक्ट स्ट्रिंग्स नामक एक नई सुविधा का उपयोग करके स्ट्रिंग्स को अनुकूलित करता है। char[] ऐरे के बजाय, एक स्ट्रिंग को byte[] ऐरे के रूप में दर्शाया जा सकता है। हम UTF-16 या Latin-1 का उपयोग करके प्रति कैरेक्टर एक या दो बाइट्स उत्पन्न कर सकते हैं। यदि JVM पहचानता है कि स्ट्रिंग में केवल ISO-8859-1/Latin-1 कैरेक्टर्स हैं, तो स्ट्रिंग आंतरिक रूप से प्रति कैरेक्टर एक बाइट का उपयोग करती है।
स्ट्रिंग प्रतिनिधित्व तुलना
// Java 8 में
public class String {
private final char[] value; // स्ट्रिंग में कैरेक्टर्स स्टोर करता है
// ---------
}
// Java 9 में
public class String {
private final byte[] value; // स्ट्रिंग में कैरेक्टर्स स्टोर करता है
private final byte coder; // एक फ्लैग जो दर्शाता है कि इस स्ट्रिंग के लिए प्रति कैरेक्टर 1 बाइट या 2 बाइट्स उपयोग करना है
// ---------
}
मुख्य बिंदु
- यह सुविधा डिफ़ॉल्ट रूप से सक्षम है और -XX:-CompactStrings का उपयोग करके बंद की जा सकती है।
- यह char[] कार्यान्वयन पर वापस नहीं जाता और सभी स्ट्रिंग्स को UTF-16 के रूप में स्टोर करता है।
- मेमोरी उपयोग को कम करता है, विशेष रूप से उन एप्लिकेशंस के लिए जो मुख्य रूप से Latin-1 कैरेक्टर्स का उपयोग करते हैं।
कॉम्पैक्ट स्ट्रिंग्स Java 9 में स्ट्रिंग स्टोरेज के लिए एक महत्वपूर्ण मेमोरी ऑप्टिमाइज़ेशन है।