[英]Java - OutOfMemoryError : Java heap space
我正在尝试创建一个大小为 100,000 的字符串数组列表,其中前两个之后的每个元素都是连接的前两个字符串。 问题是,我什至在达到 100 个字符串之前就耗尽了内存。 我打算使用这个数组列表进行二分搜索,并根据给定的输入输出字符串中的一个字母,这是字符串的索引,以及字符串中字母的索引。
这是代码
public static void generateSequence(int numStrings, ArrayList<String> input){
String temp = "", S1, S2;
for(int i = 0; i < n; i++) {
if(i == 0) {
input.add("H");
}
else if(i == 1) {
input.add("A");
}
else {
S1 = input.get(input.size() - 2);
S2 = input.get(input.size() - 1);
temp = S1.concat(S2);
input.add(temp);
temp = "";
}
}
}
我不确定如何更有效地使用内存来获取我需要的数组列表,所以任何建议都会有所帮助。 谢谢你。
那么第 N个元素是第 N-1个和第 N-2个元素的串联吗?
因此,第 N个元素的长度是前两个元素的长度之和。
你说的是大量的存储空间。 此代码向您显示第 N个条目需要多少存储空间。
double n0 = 1, n1 = 1;
for (int i=2; i<=100; i++) {
double n2 = n1 + n0;
System.out.printf("%4d : %e\n", i, n2);
n0 = n1;
n1 = n2;
}
第 49 个条目有 120 亿个字符(总共大约 240 亿个字符;或大约 48 GB)。
第 100 个条目(从 1 开始计数)有超过 5 x 10 20 个字符。
你需要重新考虑你的数据结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.