【问题标题】:java os x heap size questionjava os x 堆大小问题
【发布时间】:2011-10-23 17:45:43
【问题描述】:

我一直在 eclipse 和 intellij 中查看 os x 上的 JVM 堆大小,并直接通过命令行运行应用程序,我看到了一个奇怪的行为,我希望有人能解释一下。

  1. 如果我为 Eclipse 将 jvm 堆大小设置为较大(例如超过 1gb),然后运行一个执行的 hello world 应用程序

    System.out.println(Runtime.getRuntime().maxMemory());

我看到它有 129957888 (128mb) 作为最大内存。

  1. 如果我在 intellij 中运行相同的实验,我会得到相同的结果,但底部角落的堆大小指示器显示我只能使用 2gb 中的 100mb。

  2. 如果我只运行 java test -Xmx1024mb,那么它会告诉我我有正确的最大内存量。 (8倍)

我已经在 10.6 和 10.7 上尝试过这个,我看到了同样的事情,所以我想知道 IDE 没有像我希望的那样消耗那么多的堆大小是怎么回事。当我的机器上的内存未使用时,我的空间错误越来越多,我发现这很荒谬。

感谢任何人提供的任何帮助。

【问题讨论】:

    标签: macos jvm heap-memory


    【解决方案1】:

    听起来您正在为 IDE 的 JVM 而不是为 IDE 启动以运行您的程序的 JVM 设置堆大小。如果 IDE 在其运行所在的同一 JVM 中运行您的代码,将会很危险。

    在 Eclipse 中,运行程序时使用的默认堆大小为 128 MB。您可以使用运行或调试配置覆盖它。

    1. 右键单击要运行的主要方法的 Java 类
    2. 选择运行方式 -> 运行配置...
    3. 单击“参数”选项卡
    4. 在 VM 参数部分,输入 -Xmx256m
    5. 点击运行

    上述设置将 JVM 使用的最大堆大小设置为 256 MB。

    您的测试类的输出现在应该是 265093120。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-30
      • 2011-01-14
      • 2011-07-05
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      相关资源
      最近更新 更多