我一直在eclipse和intellij上查看os x上的JVM堆大小,并直接通过命令行运行应用程序,我看到一种奇怪的行为,我希望有人可以解释。
如果我将jvm堆大小设置为eclipse的大(例如超过1gb),然后运行一个执行的hello world应用程序
的System.out.println(调用Runtime.getRuntime()maxMemory());
我看到它有129957888(128mb)作为最大内存。
如果我在intellij中运行相同的实验,我会得到相同的结果,但是底角的堆大小指示器说我只能使用2gb中的100mb。
如果我只是运行java test -Xmx1024mb,那么它告诉我我有最大的内存量。 (8倍)
我在10.6和10.7上尝试了这个,我看到了同样的事情,所以我想知道IDE的用途是什么,并没有像我想要的那样消耗尽可能多的堆大小。当我在没有闲置的机器上玩ram时,我正在摆脱空间错误,我觉得这很荒谬。
感谢任何人提供的任何帮助。
答案 0 :(得分:1)
听起来您正在设置IDE的JVM的堆大小,而不是IDE为启动程序而启动的JVM。如果IDE在运行它的同一个JVM中运行代码,那将是危险的。
在Eclipse中,运行程序时使用的默认堆大小为128 MB。您可以使用运行或调试配置覆盖它。
上面的设置将JVM使用的最大堆大小设置为256 MB。
您的测试类的输出现在应为265093120。