如何解决OutOfMemoryError:Java堆空间

时间:2018-11-02 22:04:27

标签: java

运行此代码时出现此错误

private static List<Integer> array(int num) {
       List<Integer> value = new ArrayList<>();

        while (num != 1) {
            if(num % 2 == 0) {
             value.add(num + 2);
             }else {
              value.add(num * 3 + 1);
             }
        }
       System.out.println(value);
        return value;
    }

我能得到什么错的解释吗?

2 个答案:

答案 0 :(得分:5)

您有一个无限循环。每次迭代都会添加到列表中,直到您运行OutOfMemory。您需要在循环过程中更改 num ,以使其在某点变为 1 ,从而使循环结束。

答案 1 :(得分:2)

您的while条件永远不会等于false,因此循环无限循环。正如shmosie所说,您永远都不会修改<dependencies> <!-- https://mvnrepository.com/artifact/org.twitter4j/twitter4j-core --> <dependency> <groupId>org.twitter4j</groupId> <artifactId>twitter4j-core</artifactId> <version>4.0.7</version> </dependency> </dependencies> ,所以也许要看一下num的修改,或者对其进行一些操作,以使它实际上等于1,以使循环停止