আপনি যখন তত্ত্বটি পূর্ণসংখ্যায় করতে পারেন। 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 মিলিয়ন অক্ষর পাবেন