小编use*_*640的帖子

相同的程序,相同的JVM,但不同的机器上的内存要求和执行时间差异很大 - 为什么?

我正在尝试在集群上运行NetLogo(java仿真框架)模拟,作为大型实验的一部分.我对(相对)简单模拟的看似庞大的内存要求感到惊讶.在集群上,它会为小于"-Xmx2500M"的任何内容抛出"java.lang.OutOfMemoryError:Java堆空间"异常.单次执行需要5个小时才能运行.我在我的Mac(iMac和MacBook Pro)上运行了相同的实验,并且他们在不到一个小时内执行,"-Xmx1024"没有出错.群集作业需要"-XX:MaxPermSize = 250M",而在我的Mac上,不需要增加高于默认值.我运行相同的代码,相同的输入,在所有情况下使用完全相同的jar.

在每种情况下使用64位JVM(据我所知,这些JVM非常相似):

<on the cluster>
$ java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

<on my macs>
$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04-415-10M3646)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01-415, mixed mode)
Run Code Online (Sandbox Code Playgroud)

我在所有情况下都运行Client JVM(最初在集群上使用Server,切换到客户端没有任何区别).我尝试使用java 7在集群上执行,同样巨大的内存和执行时间问题.

我完全感到困惑,我所说过的任何人都无法解释这一点.以前有人遇到过这个吗?任何帮助非常感谢!

java heap jvm out-of-memory execution-time

9
推荐指数
1
解决办法
870
查看次数

标签 统计

execution-time ×1

heap ×1

java ×1

jvm ×1

out-of-memory ×1