जबकि आप Integer.MAX_VALUE वर्ण सिद्धांत में कर सकते हैं, JVM उस सरणी के आकार में सीमित है जो इसका उपयोग कर सकता है।
public static void main(String... args) {
for (int i = 0; i < 4; i++) {
int len = Integer.MAX_VALUE - i;
try {
char[] ch = new char[len];
System.out.println("len: " + len + " OK");
} catch (Error e) {
System.out.println("len: " + len + " " + e);
}
}
}
ओरेकल जावा 8 पर 92 प्रिंट अपडेट करें
len: 2147483647 java.lang.OutOfMemoryError: Requested array size exceeds VM limit
len: 2147483646 java.lang.OutOfMemoryError: Requested array size exceeds VM limit
len: 2147483645 OK
len: 2147483644 OK
नोट: जावा 9 में, स्ट्रिंग्स बाइट का उपयोग करेगा [] जिसका अर्थ होगा कि मल्टी-बाइट वर्ण एक से अधिक बाइट का उपयोग करेगा और अधिकतम को कम करेगा। यदि आपके पास सभी चार बाइट कोड-पॉइंट हैं जैसे इमोजीस, तो आपको केवल लगभग 500 मिलियन अक्षर मिलेंगे