我正在尝试从IntelliJ Idea中运行JUnits 当我尝试运行Test.java文件时,它给出了一个错误说
java:OutOfMemoryError:内存不足
我已经尝试将分配给Idea的内存增加到6GB,但它仍然给我同样的错误,我错过了什么:/
在 idea64.vmoptions 中增加以下内容并没有帮助。 / opt / idea / bin中的当前vmoption设置为:
-Xms124m
-Xmx2g
-XX:MaxPermSize=2g
-XX:ReservedCodeCacheSize=196m
-XX:+UseCodeCacheFlushing
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
PS: - 项目有~83k文件,项目总体大小为1.1 GB
遇到以下错误: -
信息:使用javac 1.6.0_35编译java源代码 信息:java:系统资源不足。信息:JAVA: 有关详细信息,请参阅以下堆栈跟踪信息:java:at com.sun.tools.javac.util.Position $ LineMapImpl.build(Position.java:139) 信息:java:at com.sun.tools.javac.util.Position.makeLineMap(Position.java:63) 信息:java:at com.sun.tools.javac.parser.Scanner.getLineMap(Scanner.java:1105) 信息:java:at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:512) 信息:java:at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:550) 信息:java:at com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:804) 信息:java:at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:727) 信息:java:at com.sun.tools.javac.main.Main.compile(Main.java:353)信息:java: 在com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:115) 信息:java:at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:166) 信息:java:at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:364) 信息:java:at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:276) 信息:java:at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:190) 信息:java:at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:162) 信息:java:at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:992) 信息:java:at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:739) 信息:java:at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:769) 信息:java:at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:702) 信息:java:at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:523) 信息:java:at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:314) 信息:java:at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:179) 信息:java:at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:129) 信息:java:at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:216) 信息:java:at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:111) 信息:java:at org.jetbrains.jps.cmdline.BuildMain $ MyMessageHandler $ 1.run(BuildMain.java:132) 信息:java:at org.jetbrains.jps.service.impl.SharedThreadPoolImpl $ 1.run(SharedThreadPoolImpl.java:41) 信息:java:at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:441) 信息:java:at java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:303) 信息:java:at java.util.concurrent.FutureTask.run(FutureTask.java:138) 信息:java:at java.util.concurrent.ThreadPoolExecutor中的$ Worker.runTask(ThreadPoolExecutor.java:886) 信息:java:at java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:908) 信息:java:at java.lang.Thread.run(Thread.java:662) 信息:java:编译模块' app' 信息:编译在3分钟内完成,出现1个错误和0个警告 19秒信息:1错误信息:0警告错误:java: OutOfMemoryError:内存不足
答案 0 :(得分:21)
根据您的日志,问题出在编译器堆空间中。
转到
Settings -> Compiler -> Build process heap size (MB)
并增加该值。
答案 1 :(得分:20)
Idea在单独的java进程中运行单元测试。
您需要使用
Run -> Edit Configurations...
并将您的-XmxNNNm
添加到VM选项。
例如:
-ea -Xmx1024m
" -ea"意味着"启用断言"。
如果您的单元测试无法在1GB的内存中运行,那么您可能会发生内存泄漏。
答案 2 :(得分:1)
就我而言,我的SpringBootTest配置在“启动前”中具有Build(整个项目)gradle任务。这就是我的遗漏。消除这种情况,问题就消失了。
或设置->编译器:增加构建堆大小
答案 3 :(得分:0)
增加堆大小是一种选择。 对我来说(使用Subversion进行源代码版本控制),甚至更容易卸载一些我已经签出且未直接用于测试的模块。这也将加快以后测试的构建过程。
右键单击IntelliJ项目区域中的任何模块->加载/卸载模块->选择一个/一些更大的模块,然后移至“卸载”区域。
答案 4 :(得分:-1)
OOM
发生在编译期间,因此您需要增加编译VM: