java os x堆大小问题

时间:2011-08-10 02:59:57

标签: macos jvm heap

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

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

    的System.out.println(调用Runtime.getRuntime()maxMemory());

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

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

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

    3. 我在10.6和10.7上尝试了这个,我看到了同样的事情,所以我想知道IDE的用途是什么,并没有像我想要的那样消耗尽可能多的堆大小。当我在没有闲置的机器上玩ram时,我正在摆脱空间错误,我觉得这很荒谬。

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

1 个答案:

答案 0 :(得分:1)

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

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

  1. 右键单击要运行主要方法的Java类
  2. 选择运行方式 - >运行配置......
  3. 单击Arguments选项卡
  4. 在VM参数部分中,输入-Xmx256m
  5. 点击运行
  6. 上面的设置将JVM使用的最大堆大小设置为256 MB。

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