我有,我将使用一个非常大的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应该足够他吗? –