【问题标题】:64-bit java won't allocate more than 2GB of heap memory64 位 java 不会分配超过 2GB 的堆内存
【发布时间】:2013-03-25 20:02:15
【问题描述】:

我从 Eclipse 运行我的程序并使用 64 位 java,但我仍然无法让它分配超过 2GB 的内存。我正在运行一些基准测试,所以我需要大量内存。

我的 eclipse.ini 中有这个: -Xmx8g

我希望它使用我所有的内存。 这可能是由于 32 位版本的 eclipse 造成的吗?我不确定我有什么 Eclipse。

我已尝试发送 -Xmx8g 运行程序时到 VMArgs。 我正在运行 64 位 Windows 7 和 64 位 JRE。

【问题讨论】:

  • 从命令行运行程序!
  • 您正在为 Eclipse 设置最大堆大小,而不是为程序本身设置。
  • 如何在增加堆大小的同时从命令行运行它?
  • 您是否检查了eclipse.ini 中Java VM 的路径?默认情况下,它指向 32 位版本的 Java。查找-vm 标签并查看它的设置。
  • 我的 eclipse.ini 中没有 java 的路径

标签: java eclipse heap-memory


【解决方案1】:

您只需将-d64 添加到您的eclipse.ini

【讨论】:

    【解决方案2】:

    在尝试了所有其他方法之后,VMArguments 似乎根本无法在 eclipse 中工作。

    在 Eclipse 中更改默认 VM 参数有效(终于!):

    将 VM 参数插入 JRE:当 Eclipse 打开时,打开 Preferences(对于 Windows:位于 Window 菜单项下。对于 Mac:位于 Eclipse 菜单项下),打开 Java 部分,单击 Installed JREs,单击正在使用的 JRE(可能是 jre6),单击 Edit... 按钮,并将其插入到 Default VM Arguments 中:

    -Xms256M -Xmx8192M

    【讨论】:

    • 我也有同样的问题;但我仍然遇到这个问题,错误是这样的:Invalid maximum heap size: -Xmx4096MThe specified size exceeds the maximum representable size.
    【解决方案3】:

    在运行配置屏幕中,转到参数选项卡,将-Xmx8g 添加到 VM 参数文本框中。

    【讨论】:

    • 我试过了,它似乎仍然限制在 2GB。 System.getProperty("sun.arch.data.model") 返回 64。
    • 您必须创建一个运行配置,并从中运行您的程序,然后更改才会生效。
    • 你现在填满了整个 2GB 吗?如果没有,JVM 可能不会到 8GB 级别。
    • 是的,然后得到异常 java.lang.OutOfMemoryError
    • 另外,Runtime.getRuntime().maxMemory() 返回的内存小于 2 GB。
    【解决方案4】:

    尝试这样做:

    System.getProperty("sun.arch.data.model") 
    

    看看它在你的程序中是返回 32 还是 64

    您还需要将 -Xmx 添加到您的程序的启动参数中,而不仅仅是 Eclipse。

    您可以通过以下方式验证您的程序的 -Xmx 配置是否正确:

    Runtime.getRuntime().maxMemory();
    

    【讨论】:

    • 是的,它是 64 位的。如何为 eclipse 以外的其他程序添加 -Xmx?
    • 这是一个命令行选项。所以将它添加到java 命令行。如果您从 Eclipse 启动程序,您可以从启动器配置中设置 JVM 命令选项;例如通过“运行 > 运行配置”向导。
    猜你喜欢
    • 2013-04-10
    • 2014-02-03
    • 1970-01-01
    • 2013-01-24
    • 2013-07-30
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 2015-12-07
    相关资源
    最近更新 更多