簡體   English   中英

java:OutOfMemoryError:在Idea中運行JUnits時內存不足

[英]java: OutOfMemoryError: insufficient memory while running JUnits in Idea

我正在嘗試從我的 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:在 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:727) 信息:java:在 com.sun.tools.javac.main.Main.compile(Main.java: 353) 信息:java:在 com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:115) 信息:java:在 org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:166)信息:java:在 org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:364) 信息:java:在 org.jetbra ins.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:276) 信息:java:在 org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:190) 信息:java:在 org. jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:162) 信息:java:在 org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:992) 信息:java:在 org.jetbrains。 jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:739) 信息:java:在 org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:769) 信息:java:在 org.jetbrains.jps.incremental。 IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:702) 信息:java:在 org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:523) 信息:java:在 org.jetbrains.jps.incremental.IncProjectBuilder.runBuild( IncProjectBuilder.java:314) 信息:java:在 org.jetbrains.jps.incremental.Inc ProjectBuilder.build(IncProjectBuilder.java:179) 信息:java:在 org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:129) 信息:java:在 org.jetbrains.jps.cmdline.BuildSession.runBuild( BuildSession.java:216) 信息:java:在 org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:111) 信息:java:在 org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler$1.run(BuildMain .java:132) 信息:java:在 org.jetbrains.jps.service.impl.SharedThreadPoolImpl$1.run(SharedThreadPoolImpl.java:41) 信息:java:在 java.util.concurrent.Executors$RunnableAdapter.call(Executors. java:441) 信息:java:在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 信息:java:在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 信息: java:在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 信息:java:在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 信息 ion:java:在 java.lang.Thread.run(Thread.java:662) 信息:java:編譯模塊“app”時出錯 信息:編譯完成,在 3 分 19 秒內出現 1 個錯誤和 0 個警告信息:1 個錯誤信息:0 警告錯誤:java:OutOfMemoryError:內存不足

想法編譯器設置

根據您的日志,問題出在編譯器堆空間中。

Settings -> Compiler -> Build process heap size (MB)

並增加該值。

Idea 在單獨的 java 進程中運行單元測試。

你需要使用

Run -> Edit Configurations...

並將您的-XmxNNNm添加到 VM 選項。

例如:

-ea -Xmx1024m

“-ea”的意思是“啟用斷言”。

如果您的單元測試無法在 1GB 內存中運行,那么您可能存在內存泄漏。

由於這個OOM發生在編譯過程中,你需要增加編譯VM:

就我而言,我的 SpringBootTest 配置在“啟動前”中有構建(整個項目)gradle 任務。 所以這是我的疏忽。 消除它,問題就消失了。

或設置 -> 編譯器:增加構建堆大小

增加堆大小是一種選擇。 對我來說(使用 subversion 進行源代碼版本控制)卸載一些我已經檢出的模塊和不直接用於測試的模塊更容易。 這也將加快未來測試的構建過程。

右鍵單擊 IntelliJ 項目區域中的任何模塊 -> 加載/卸載模塊 -> 選擇一個/一些更大的模塊並移動到“卸載”區域。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM