带有周期性中断的java while循环接收内存不足异常

Atm*_*tma 0 java memory-leaks loops out-of-memory infinite-loop

我有以下循环侦听UDP消息进来

 public void run(){

 int count = 0;
        boolean loopRecv = true;
        while (loopRecv) {
                count++;
                if (count == 500) {
                    loopRecv = false;
                    System.out.println("break from loop");

                    count = 0;


                }
            }
 }
Run Code Online (Sandbox Code Playgroud)

问题是在几个小时内,我收到了内存不足的异常.此外,我正在监视Top中的内存并且它正在缓慢增长.

我认为打破这个循环将删除分配的堆栈帧,但似乎并非如此.

如何在不收到内存不足错误的情况下运行此循环?

Ami*_*ani 5

你的while循环每500次迭代,你回调run.

run()
.
. 500 iterations
.
   run()
   .
   .
   . 500 iterations
   .
      run()
Run Code Online (Sandbox Code Playgroud)

你的loopRecv布尔没有做任何事情.虽然你设置loopRecv为false,但你立即进行递归调用,使布尔赋值无效!因此,StackOverflowError.相反,为什么不只是找到一种迭代实现方法的方法呢?考虑打破标签.目前还不是很清楚你的功能是什么.