我遇到一个问题,每当我尝试运行JUnit测试时,它们都会因StackOverflowError
而失败。我的问题是我有一个递归函数,遍历一个非常大的图来查找所有可能的路径。我还有一个递归计数器,它计算最深的递归是什么,并且大多数图表位于3000到4000之间。当我运行我的JUnit测试时,StackOverflowError
总是恰好发生在2300,无论VM的参数是什么集。
我已经尝试-Xss1m
到-Xss10m
,但无效,StackOverflowError
仍然出现在相同的递归深度。我已经在互联网上搜索了一下,发现我还要设置正在运行的eclipse应用程序的堆栈大小。所以我做了但又无济于事。
这里有几个截图,我已经尝试设置堆栈大小:
我错过了哪些想法?
答案 0 :(得分:0)
现在回答这个问题有点晚了......
首先解决方案:
<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 >
行,我不知道如何在代码块中突出显示它。
您的解决方案无效的原因: junit不会使用您正在修改的JVM。
如果你在这个类中编写一个main函数,它将使用它。