java为什么在使用Powershell指定Xms和Xmx时,它们什么都不做,但通过Netbeans IDE可以正常工作?
我有一个Java程序,它创建了4个长度为MAX_INTEGER - 2
的空字节数组,然后在main方法中的无限while
循环上停止
我已将Windows Java设置设置为包含参数-Xms12g -Xms12g
(我有16gb的RAM)。
当在Netbeans IDE中使用为VM设置的相同参数运行程序时,程序会执行,我可以在Task Manager中看到使用了~8g RAM,这正是我所期望的。
我已经把这个程序编译成了一个独立的程序。jar文件,以便我可以从Powershell外部运行它,但在尝试运行该行时:
java -jar prog.jar -Xms12g -Xmx12g
有人告诉我,不知何故,我已经超出了堆空间,但我刚刚通过IDE看到的情况并非如此:
-XX:MaxPermSize=12g
似乎也没什么区别,IDE的VM不需要这个参数
我错过了什么
-
完整的完整源代码:
package prog;
public class Prog
{
public static final byte[] arr1 = new byte[Integer.MAX_VALUE - 2];
public static final byte[] arr2 = new byte[Integer.MAX_VALUE - 2];
public static final byte[] arr3 = new byte[Integer.MAX_VALUE - 2];
public static final byte[] arr4 = new byte[Integer.MAX_VALUE - 2];
public static void main(String[] args)
{
while(true);
}
}
共 (0) 个答案