我有,我將使用一個非常大的short[]
陣列方案更大的堆空間:Java要求比什麼是合理的
import java.lang.Math;
public class HPTest {
public static void main(String[] args) {
int n = 30;
short[] a = new short[(int)Math.pow(2,n)];
}
}
據我所知,short[]
陣列應每元素中使用2個字節,因此具有2^30元素的數組應該需要大約2吉比的RAM。
爲了運行程序,因此,我試圖
java -Xms2000m HPTest
,但仍然得到了堆空間錯誤。即使在3000m
我也得到了同樣的錯誤,但在4000m
它工作。
任何想法,爲什麼我必須遠遠高於2000m
的估計限制?
編輯: 正如許多用戶指出的那樣,我在聲明short需要1個字節而不是2個字節時犯了一個非常尷尬的錯誤。那麼問題應該是爲什麼它不能滿足2000m
。
短是2個字節... –
一個'byte'是一個字節,因此名字。順便說一句'1 << n'是計算2的冪的更有效的方法。 –
即使如此,3000m/3gb應該足夠他嗎? –