java os x 堆大小问题
我一直在 eclipse 和 intellij 中查看 os x 上的 JVM 堆大小,并直接通过命令行运行应用程序,我看到了一个奇怪的行为,希望有人能解释一下。
如果我将 Eclipse 的 jvm 堆大小设置为较大的值(例如超过 1GB),然后运行一个执行的 hello world 应用程序
System.out.println(Runtime.getRuntime().maxMemory());
我看到它的最大内存为 129957888 (128mb)。
如果我在 intellij 中运行相同的实验,我会得到相同的结果,但底角的堆大小指示器表明我只使用了 2GB 中的 100MB。
如果我只是运行 java test -Xmx1024mb,那么它会告诉我我有正确的最大内存量。 (8倍)
我在10.6和10.7上尝试过这个,我看到了同样的事情,所以我想知道IDE没有消耗我想要的那么多堆大小是怎么回事。当我的机器上有大量内存未使用时,我会遇到堆空间错误,我发现这很荒谬。
感谢任何人可以提供的帮助。
I have been looking at JVM heap sizes on os x both in eclipse and intellij and running applications directly through the command line and I'm seeing a weird behavior I am hoping someone can explain.
If I set the jvm heap size to something large (e.g. over 1gb) for eclipse and then run a hello world application that executes
System.out.println(Runtime.getRuntime().maxMemory());
I see that it has 129957888 (128mb) as max memory.
If I run the same experiment in intellij, I get the same result but the heap size indicator in the bottom corner says I'm only using 100mb out of 2gb that I can.
If I just run java test -Xmx1024mb, then it tells me that I have the right amount max memory. (8 times as much)
I have tried this on 10.6 and 10.7 and I'm seeing the same thing, so I'm wondering what is going on with the IDE's not consuming as much heap size as I want them to. I am getting heap out of space errors when I have gigs of ram on my machines sitting there unused and I am finding this to be ridiculous.
Thanks for any help anyone can provide.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
听起来您正在为 IDE 的 JVM 设置堆大小,而不是为 IDE 启动来运行程序的 JVM 设置堆大小。如果 IDE 在运行代码的同一个 JVM 中运行您的代码,那将是危险的。
在 Eclipse 中,运行程序时使用的默认堆大小为 128 MB。您可以使用运行或调试配置来覆盖它。
上述设置将 JVM 使用的最大堆大小设置为 256 MB。
您的测试类的输出现在应该是 265093120。
It sounds like you are setting the heap size for the IDE's JVM instead of for the JVMs the IDEs are launching to run your programs. It would be dangerous if an IDE ran your code in the same JVM in which it was running.
In Eclipse, the default heap size used when running programs is 128 MB. You can override this with a run or debug configuration.
The above setting sets the max heap size used by the JVM to 256 MB.
The output for your test class should now be 265093120.