2

我有一个问题,每当我尝试运行我的 JUnit 测试时,它们都会因为StackOverflowError. 我的问题是我有一个递归函数,它遍历一个非常大的图形以找到所有可能的路径。我还有一个递归计数器,它计算最深的递归是多少,并且大多数图表都位于 3000 到 4000 之间。当我运行 JUnit 测试StackOverflowError时,无论我设置什么 VM 参数,它总是恰好发生在 2300 处。

我已经尝试过-Xss1m-Xss10m无济于事,StackOverflowError仍然发生在相同的递归深度。我已经在互联网上搜索了一下,发现我还必须设置正在运行的 eclipse 应用程序的堆栈大小。所以我做了,但再次无济于事。

这里有一些我已经尝试设置堆栈大小的屏幕截图: 在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

有什么我错过的想法吗?

4

1 回答 1

1

现在回答这个问题有点晚了......

先解决办法:

       <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <!-- look here -->
                <argLine>-Xss18m</argLine>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.19.1</version>
                </dependency>
            </dependencies>
        </plugin>

检查 的行<!--look here >,我不知道如何在代码块中突出显示它。

您的解决方案不起作用的原因:您正在修改的 JVM 没有被 junit 使用。

如果你在这个类中编写一个 main 函数,它就会使用它。

于 2018-01-07T06:56:36.577 回答