答案因系统架构而异。
当我在 2012 年发布答案时,这台旧机器
最大字符长度 = 37748734
Java版本:1.6.0_35
操作系统:Windows 7
系统架构:32位(x86)
内存:2 GB
处理器:奔腾双核 E5800 3.20GHz
2016年
最大字符长度 = 301989886
Java版本:1.8
操作系统:Ubuntu 14 LTE 和 Windows 7
系统架构:64位(x86_64)
内存:8 GB
处理器:Intel(R) Core(TM) i3-4130 CPU @ 3.40GHz
自己运行这个程序
StringBuffer strbTest = new StringBuffer();
long len = 0;
try {
System.out.println("Wait.... til number not generated.");
while(true) {
strbTest.append("a");
len++;
}
} catch (OutOfMemoryError e) {
System.out.println("Max length on your system is "+len);
System.out.println("Error");
}
System.out.println("End");
输出
Max length on your system is 37748734