运行 Spring Boot "context loads" maven 中的测试导致 OutOfMemoryError
Running Spring Boot "context loads" test in maven causes OutOfMemoryError
我有一个多模块 Maven 项目,其中两个模块是 Spring 启动应用程序。他们每个人都有一个简单的测试,即 Spring 应用程序上下文成功加载(我的测试与 this one 非常相似)。我 运行 在项目根目录中使用以下命令进行测试:
mvn -P IntegrationTests clean test
在上下文初始化期间,事情超出了我的控制,应用程序 "eats" 内存(堆大小迅速增长到 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 中 运行ning
mvn test
时)- 它影响主 java 进程但不影响其子进程
- 在命令行添加
-Drun.jvmArguments="..."
但问题依然存在。
请帮助我在测试中对抗OutOfMemoryError
。
将 Surefire 插件显式添加到 module-specific pom.xml 并在那里配置 VM 选项。我喜欢这个解决方案,因为这样 VM 选项是
- 传递给生成的 surefire 进程(应该可以解决您的问题)
- 仅影响测试应用程序构建
- 在您团队中的开发者之间共享
- 可为每个模块独立配置
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-Xmx256m -Xms128m -XX:MaxPermSize=256m -XX:PermSize=128m</argLine>
</configuration>
</plugin>
<!-- your other plugins go here -->
</plugins>
</build>
我有一个多模块 Maven 项目,其中两个模块是 Spring 启动应用程序。他们每个人都有一个简单的测试,即 Spring 应用程序上下文成功加载(我的测试与 this one 非常相似)。我 运行 在项目根目录中使用以下命令进行测试:
mvn -P IntegrationTests clean test
在上下文初始化期间,事情超出了我的控制,应用程序 "eats" 内存(堆大小迅速增长到 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 中 运行ning
mvn test
时)- 它影响主 java 进程但不影响其子进程 - 在命令行添加
-Drun.jvmArguments="..."
但问题依然存在。
请帮助我在测试中对抗OutOfMemoryError
。
将 Surefire 插件显式添加到 module-specific pom.xml 并在那里配置 VM 选项。我喜欢这个解决方案,因为这样 VM 选项是
- 传递给生成的 surefire 进程(应该可以解决您的问题)
- 仅影响测试应用程序构建
- 在您团队中的开发者之间共享
- 可为每个模块独立配置
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-Xmx256m -Xms128m -XX:MaxPermSize=256m -XX:PermSize=128m</argLine>
</configuration>
</plugin>
<!-- your other plugins go here -->
</plugins>
</build>