java - 为什么当使用 Powershell 指定 -Xms 和 -Xmx 时它们不执行任何操作,但通过 Netbeans IDE 可以正常工作?

标签 java memory ram

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

我已将 Windows Java 设置包含参数 -Xms12g -Xms12g(我有 16GB RAM)。 Java settings

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

我已将该程序编译为独立的 .jar 文件,以便我可以从 Powershell 外部运行它,但在尝试运行该行时: java -jar prog.jar -Xms12g -Xmx12g 有人告诉我不知何故超出了堆空间,但我刚刚通过 IDE 发现情况并非如此: Powershell error

-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 的

关于java - 为什么当使用 Powershell 指定 -Xms 和 -Xmx 时它们不执行任何操作,但通过 Netbeans IDE 可以正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59690300/

相关文章:

java - MimeMessage 中的智能引号未在 Outlook 中正确显示

java - 如何在eclipse java中从数据资源加载图像

java - 类问题java

python - Pandas 小数据效率

java - Java中如何确定对象的大小

c - 在 C 中为具有字符指针的结构分配内存

javascript - 回调函数内声明的变量是否保留在内存中,还是在回调执行结束时被销毁?

java - Sqoop "import-all-tables"无法导入所有表

python - 用python收集大量数据

java - JAVA VPS服务器内存问题