当前位置: 首页 > 知识库问答 >
问题:

运行JUnit测试时无法为对象堆保留足够的空间

司徒斌
2023-03-14

在我的项目中,我有单元测试。我在用IntelliJ。每当我尝试运行它们时,IntelliJ都会显示一条消息:

VM初始化时出错

无法为对象堆保留足够的空间

无法创建Java虚拟机。

我试着用VM参数run Configuration运行这些测试-

public class TestClass {

    @Test
    public void test() {
        assertTrue(true);
    }
}

我还是会犯同样的错误!只有在运行测试时才会出现问题——其他方法运行正常。你知道是什么导致了这个奇怪而恼人的错误吗?我是IntelliJ的新手,所以我可能错过了什么。

使现代化

我试图从命令行运行测试,但结果相同。最后,通过向maven命令添加-DforkMode=never,我能够运行它们。但仍然无法从IntelliJ运行测试。


共有1个答案

令狐良骏
2023-03-14

我面临着同样的问题,这个问题现在已经为我解决了。如果您使用的是maven,那么可以通过向pom添加类似的属性来配置需要传递给运行的默认jvm参数或其他测试选项。xml。您可能需要注意的是,这是所有junit运行的主设置。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.8.1</version>
            <configuration>
                <argLine>-Xms500m -Xmx1g</argLine>
                <enableAssertions>true</enableAssertions>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>

在我的例子中,项目将此配置设置为使用-Xms10g-Xmx10g。将此替换为较低的值,如-Xms500m-Xmx1g解决了这个问题。

您可能已经有一个类似的配置,所以您可能希望在本地覆盖它,否则添加此配置将有助于覆盖Intellij传递的默认值。

 类似资料:
  • 问题内容: 每次尝试运行该程序时,我都会反复收到以下异常。 VM初始化期间发生错误 无法为对象堆保留足够的空间 无法创建Java虚拟机。 我试图增加虚拟内存(页面大小)和RAM大小,但无济于事。 如何消除此错误? 问题答案: 使用或任意数量)(或简称)运行JVM

  • 这是在“Gradlew Build”期间在Android Studio中发生的。 错误:“VM初始化时发生错误,无法为3174400KB对象堆保留足够的空间”(3.18GB) 项目文件夹本身只占用1.1GB,所以我不知道这是怎么可能的。 更新:这个问题似乎已经自行解决。

  • 我已经安装了Android Studio 1.1.0。我还没有做任何事情,比如启动新的Android应用程序或导入任何东西。不知何故,它试图构建一些东西,它抛出同步错误。 错误:无法启动守护进程。此问题可能是由于守护进程配置不正确造成的。例如,使用了一个无法识别的jvm选项。请参阅http://gradle.org/docs/2.2.1/userguide/gradle_daemon.html中关

  • 我试图为Android生成一个发布版本,但是在命令之后:“离子科尔多瓦构建 - 发布机器人”我有例外: 我试过这个:开始-

  • 所以我不知道我点击了什么,但在我点击之后,所有的东西,就像字面上所有的东西都停止工作了。 当前错误消息: 错误:无法启动后台进程。此问题可能是后台进程配置不正确造成的。例如,使用了一个无法识别的jvm选项。请参阅https://docs.gradle.org/5.4.1/userguide/gradle_daemon.html中关于后台进程的用户手册章节:进程命令行:C:\Program File

  • 问题内容: 只是面临奇怪的问题。当我键入 我有 。 这个命令工作正常 如果我将xms,xmx更改为128m,则会再次出现错误。 使用命令,我可以看到,我有超过192 MB的空闲空间,那么为什么我仍然收到此错误? 谢谢 问题答案: 您尝试在其上运行此计算机的机器似乎只有256 MB内存。 也许JVM试图分配一个大的,连续的64 MB内存块。可用的192 MB可能会分成较小的碎片,因此不会有连续的64