java:OutOfMemoryError:在Idea中运行JUnits时内存不足
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24323628/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
java: OutOfMemoryError: insufficient memory while running JUnits in Idea
提问by vipin8169
I am trying to run JUnits from my IntelliJ Idea When I try to run the Test.java file it gives me an error saying that
我正在尝试从我的 IntelliJ Idea 运行 JUnits 当我尝试运行 Test.java 文件时,它给了我一个错误提示
java: OutOfMemoryError: insufficient memory
java: OutOfMemoryError: 内存不足
I have tried increasing the memory allocated to Idea to as large as 6GB but it still gives me the same error, what am I missing :/
我尝试将分配给 Idea 的内存增加到 6GB,但它仍然给我同样的错误,我错过了什么:/
Increasing the following in idea64.vmoptionsdidn't help. current vmoption settings in /opt/idea/bin are:
在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:- the project has ~83k files and overall size of project is 1.1 GB
PS:- 项目有~83k 文件,项目总大小为 1.1 GB
Below Error is encountered:-
遇到以下错误:-
Information:Using javac 1.6.0_35 to compile java sources Information:java: The system is out of resources. Information:java: Consult the following stack trace for details. Information:java: at com.sun.tools.javac.util.Position$LineMapImpl.build(Position.java:139) Information:java: at com.sun.tools.javac.util.Position.makeLineMap(Position.java:63) Information:java: at com.sun.tools.javac.parser.Scanner.getLineMap(Scanner.java:1105) Information:java: at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:512) Information:java: at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:550) Information:java: at com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:804) Information:java: at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:727) Information:java: at com.sun.tools.javac.main.Main.compile(Main.java:353) Information:java: at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:115) Information:java: at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:166) Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:364) Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:276) Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:190) Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:162) Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:992) Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:739) Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:769) Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:702) Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:523) Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:314) Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:179) Information:java: at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:129) Information:java: at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:216) Information:java: at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:111) Information:java: at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler$1.run(BuildMain.java:132) Information:java: at org.jetbrains.jps.service.impl.SharedThreadPoolImpl$1.run(SharedThreadPoolImpl.java:41) Information:java: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) Information:java: at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) Information:java: at java.util.concurrent.FutureTask.run(FutureTask.java:138) Information:java: at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) Information:java: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) Information:java: at java.lang.Thread.run(Thread.java:662) Information:java: Errors occurred while compiling module 'app' Information:Compilation completed with 1 error and 0 warnings in 3 min 19 sec Information:1 error Information:0 warnings Error:java: OutOfMemoryError: insufficient memory
信息:使用 javac 1.6.0_35 编译 java 源 信息:java:系统资源不足。信息:java:有关详细信息,请参阅以下堆栈跟踪。信息:java:在 com.sun.tools.javac.util.Position$LineMapImpl.build(Position.java:139) 信息:java:在 com.sun.tools.javac.util.Position.makeLineMap(Position.java: 63) 信息:java:在 com.sun.tools.javac.parser.Scanner.getLineMap(Scanner.java:1105) 信息:java:在 com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java: 512) 信息:java:在 com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:550) 信息:java:在 com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java: 804)信息:java:在com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:
采纳答案by Steve C
Idea runs unit tests in a separate java process.
Idea 在单独的 java 进程中运行单元测试。
You need to use
你需要使用
Run -> Edit Configurations...
and add your -XmxNNNm
to VM Options.
并将您的添加-XmxNNNm
到 VM 选项。
For example:
例如:
-ea -Xmx1024m
The "-ea" means "enable assertions".
“-ea”的意思是“启用断言”。
If your unit test(s) can't run in a 1GB of memory then it's possible that you have a memory leak.
如果您的单元测试无法在 1GB 内存中运行,那么您可能存在内存泄漏。
回答by Franti?ek Hartman
Based on your log the problem is in compiler heap space.
根据您的日志,问题出在编译器堆空间中。
Go to
去
Settings -> Compiler -> Build process heap size (MB)
and increase that value.
并增加该值。
回答by user2269817
As this OOM
happened during compilation, you need to increase compile VM:
由于OOM
在编译期间发生这种情况,您需要增加编译VM:
回答by AlexPes
In my case, my SpringBootTest configuration has Build (whole project) gradle task in "Before launch". So that's my omission. Eliminating that and issue's gone away.
就我而言,我的 SpringBootTest 配置在“启动前”中有构建(整个项目)gradle 任务。所以这是我的疏忽。消除它,问题就消失了。
Or Settings -> Compiler : increase build heap size
或设置 -> 编译器:增加构建堆大小
回答by Anja
To increase heap size is one option. For me (using subversion for source version control) it was even easier to unload some of the modules which I had checked out and where not directly used for the test. This will also speed up the build process for future tests.
增加堆大小是一种选择。对我来说(使用 subversion 进行源代码版本控制)卸载一些我已经检出的模块和不直接用于测试的模块更容易。这也将加快未来测试的构建过程。
Right click on any module in the project-area of IntelliJ -> Load/Unload modudules -> Choose one/some bigger module and move to the "unload" area.
右键单击 IntelliJ 项目区域中的任何模块 -> 加载/卸载模块 -> 选择一个/一些更大的模块并移动到“卸载”区域。