【发布时间】:2018-08-23 02:58:01
【问题描述】:
我有一个多模块 Maven 项目,其中两个模块是 Spring Boot 应用程序。他们每个人都有一个简单的测试,Spring 应用程序上下文加载成功(我的测试与this one 非常相似)。我在项目根目录中使用以下命令运行此测试:
mvn -P IntegrationTests clean test
在上下文初始化期间,事情超出了我的控制,应用程序“吃掉”内存(堆大小迅速增长到 4 GB),然后上下文无法以 java.lang.OutOfMemoryError: PermGen space 错误开始(是的,我在Java 7).
在测试期间监控任务管理器我注意到 maven 产生了两个与 surefire plugin 有关的新进程。我不知道它来自哪里,因为我没有在我的 pom.xml 中添加 surefire 插件。
之前在某处遇到相同错误时,我指定了 VM 选项(例如 -Xmx256m -Xms128m -XX:MaxPermSize=256m -XX:PermSize=128m),问题已解决。
这次我尝试了
- 设置
MAVEN_OPTS环境变量 - 设置 VM 选项(在 IntelliJ IDEA 中运行
mvn test时)- 它影响主 java 进程,但不影响其子进程 - 在命令行中添加
-Drun.jvmArguments="..."
但问题仍然存在。
请帮助我在测试中对抗OutOfMemoryError。
【问题讨论】:
标签: maven spring-boot out-of-memory maven-surefire-plugin permgen