#!/bin/bash
#$ -N para_three
#$ -q all.q
#$ -pe mpi 30
/home/abhishekb/netlogo/netlogo-5.2.0/netlogo-headless.sh \
--model /home/abhishekb/models/try4.nlogo \
--experiment experiment1 \
--table /home/abhishekb/csvresults/24.04_Results.csv
错误:
Exception in thread "JobThread"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "JobThread"
Exception in thread "JobThread"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "JobThread"
Exception in thread "JobThread"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "JobThread"
为什么,我不明白?我找到了使用64位java运行NetLogo的建议。但是[1] [2]链接已过期,请提供帮助。
令人惊讶的是,早些时候我在NetLogo 5.1上运行它并且从未出现过这个错误。
脚本更改: 我试着在最后添加线程:
#!/bin/bash
#$ -N para_three
#$ -q all.q
#$ -pe mpi 30
/home/abhishekb/netlogo/netlogo-5.2.0/netlogo-headless.sh \
--model /home/abhishekb/models/try4.nlogo \
--experiment experiment1 \
--table /home/abhishekb/csvresults/24.04_Results.csv \
--threads 30
新错误:
Exception in thread "main" java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at org.nlogo.generator.CustomClassLoader.loadClass(CustomClassLoader.scala:27)
at org.nlogo.generator.CustomClassLoader.loadBytecodeClass(CustomClassLoader.scala:32)
at org.nlogo.generator.Generator$InstructionGenerator.finish(Generator.scala:241)
编辑3:
#!/bin/sh
cd "`dirname "$0"`" # the copious quoting is for handling paths with spaces
#-Xmx3000m use up to 1GB RAM (edit to increase)
# -Dfile.encoding=UTF-8 ensure Unicode characters in model files are compatible cross-platform
# -classpath NetLogo.jar specify main jar
# org.nlogo.headless.Main specify we want headless, not GUI
# "$@" pass along any command line arguments
-XX:MaxPermSize=3200m avoid OutOfMemory errors for large models
java -Xmx1024m -Dfile.encoding=UTF-8 -classpath NetLogo.jar org.nlogo.headless.Main "$@"
错误:
/home/abhishekb/netlogo/netlogo-5.2.0/netlogo-headless.sh:8行:-XX:MaxPermSize = 3200m:找不到命令 线程“main”中的异常java.lang.OutOfMemoryError:PermGen空间at java.lang.ClassLoader.defineClass(ClassLoader.java:800)at java.lang.ClassLoader.defineClass(ClassLoader.java:643)at org.nlogo.generator.CustomClassLoader.loadClass(CustomClassLoader.scala:27) 在 org.nlogo.generator.CustomClassLoader.loadBytecodeClass(CustomClassLoader.scala:32) 在 org.nlogo.generator.Generator $ InstructionGenerator.finish(Generator.scala:241) 在 org.nlogo.generator.Generator $ InstructionGenerator.generate(Generator.scala:93) 在 org.nlogo.generator.Generator.org $ nlogo $ $发电机发电机$$递归(Generator.scala:28) 在 org.nlogo.generator.Generator $ InstructionGenerator $$ anonfun $ generateOldStyleCall $ 1.适用(Generator.scala:208) 在 org.nlogo.generator.Generator $ InstructionGenerator $$ anonfun $ generateOldStyleCall $ 1.适用(Generator.scala:208) 在 scala.collection.TraversableLike $$ anonfun $表$ 1.适用(TraversableLike.scala:233) 在 scala.collection.TraversableLike $$ anonfun $表$ 1.适用(TraversableLike.scala:233) 在 scala.collection.IndexedSeqOptimized $ class.foreach(IndexedSeqOptimized.scala:34) 在scala.collection.mutable.ArrayOps.foreach(ArrayOps.scala:38)at scala.collection.TraversableLike $ class.map(TraversableLike.scala:233) 在scala.collection.mutable.ArrayOps.map(ArrayOps.scala:38)at org.nlogo.generator.Generator $ InstructionGenerator.generateOldStyleCall(Generator.scala:208) 在 org.nlogo.generator.Generator $ InstructionGenerator.generateInstruction(Generator.scala:146) 在 org.nlogo.generator.Generator $ InstructionGenerator $$ anonfun $ generateInstruction $ 1.适用$ mcVI $ SP(Generator.scala:167) at scala.collection.immutable.Range.foreach $ mVc $ sp(Range.scala:78) 在 org.nlogo.generator.Generator $ InstructionGenerator.generateInstruction(Generator.scala:159) 在 org.nlogo.generator.Generator $ InstructionGenerator $$ anonfun $ generateInstruction $ 1.适用$ mcVI $ SP(Generator.scala:167) at scala.collection.immutable.Range.foreach $ mVc $ sp(Range.scala:78) 在 org.nlogo.generator.Generator $ InstructionGenerator.generateInstruction(Generator.scala:159) 在 org.nlogo.generator.Generator $ InstructionGenerator $$ anonfun $ generateInstruction $ 1.适用$ mcVI $ SP(Generator.scala:167) 在scala.collection.immutable.Range.foreach $ mVc $ sp(Range.scala:81) 在 org.nlogo.generator.Generator $ InstructionGenerator.generateInstruction(Generator.scala:159) 在 org.nlogo.generator.Generator $ InstructionGenerator $$ anonfun $ generateInstruction $ 1.适用$ mcVI $ SP(Generator.scala:167) at scala.collection.immutable.Range.foreach $ mVc $ sp(Range.scala:78) 在 org.nlogo.generator.Generator $ InstructionGenerator.generateInstruction(Generator.scala:159) 在 org.nlogo.generator.Generator $ InstructionGenerator.generateBodyMethod(Generator.scala:115) 在 org.nlogo.generator.Generator $ InstructionGenerator.generate(Generator.scala:90) 在 org.nlogo.generator.Generator.org $ $ nlogo发电机$ $$发电机递归(Generator.scala:28)
答案 0 :(得分:2)
错误消息是指PermGen,因此这意味着问题不是堆的总大小,而是具体的PermGen上限。您需要使用更高的PermGen设置启动Java,例如-XX:MaxPermSize=512m
。您的netlogo-headless.sh
文件中可能已存在此类设置;如果是这样,增加它。如果那里没有这样的设置,请添加一个。
我大约98%确定这与NetLogo 5.1和5.2之间的任何差异无关。对于你现在用5.2做什么以及你用5.1做什么(可能是threads=
设置的大小),你可能还有其他的不同。
以下是NetLogo 5.2的默认netlogo.sh
和netlogo-headless.sh
文件的工作链接:https://github.com/NetLogo/NetLogo/blob/5.2.0/dist/netlogo.sh,https://github.com/NetLogo/NetLogo/blob/5.2.0/dist/netlogo-headless.sh
运行64位JVM与解决PermGen问题无关,但对于运行非常大的堆可能是必需的。