[英]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.