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中的内存并且它正在缓慢增长.
我认为打破这个循环将删除分配的堆栈帧,但似乎并非如此.
如何在不收到内存不足错误的情况下运行此循环?
你的while循环每500次迭代,你回调run.
run()
.
. 500 iterations
.
run()
.
.
. 500 iterations
.
run()
Run Code Online (Sandbox Code Playgroud)
你的loopRecv布尔没有做任何事情.虽然你设置loopRecv为false,但你立即进行递归调用,使布尔赋值无效!因此,StackOverflowError.相反,为什么不只是找到一种迭代实现方法的方法呢?考虑打破标签.目前还不是很清楚你的功能是什么.
| 归档时间: |
|
| 查看次数: |
529 次 |
| 最近记录: |