为什么当使用Powershell指定-Xms和-Xmx时,它们什么都不做,但是可以通过Netbeans IDE正常工作?

罗戈德

我有一个Java程序,它创建4个MAX_INTEGER - 2长度为空的字节数组,然后while在main方法的无限循环中暂停

我已将Windows Java设置设置为包括参数-Xms12g -Xms12g(我有16GB RAM)。Java设定

当在Netbeans IDE中为VM设置了相同的参数运行程序时,该程序将执行,我可以在任务管理器中看到正在使用〜8g RAM,这与我期望的差不多。 任务管理器Java

我已将该程序编译为一个独立的.jar文件,以便可以从Powershell外部运行该程序,但是在尝试运行该行时:java -jar prog.jar -Xms12g -Xmx12g有人告诉我我超出了堆空间,但是我只是发现这不是通过IDE的情况:Powershell错误

-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);
    }
}
罗戈德

事实证明,我需要的命令是:

java -jar -Xmx12g -Xms12g prog.jar

不:

java -jar prog.jar -Xmx12g -Xms12g

正如我一直想的那样。

我没有意识到第一个参数用于JVM,第二个参数(在.jar之后)用于.jar

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档