gpt4 book ai didi

带有定期中断的java while循环收到内存不足异常

转载 作者:行者123 更新时间:2023-12-01 17:23:01 25 4
gpt4 key购买 nike

我有以下循环来监听传入的 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;


}
}
}

问题是在几个小时内,我收到内存不足异常。我还监视 Top 中的内存,它增长缓慢。

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

如何运行此循环而不收到内存不足错误?

最佳答案

while 循环每迭代 500 次,就会回调 run

run()
.
. 500 iterations
.
run()
.
.
. 500 iterations
.
run()

您的loopRecv boolean 值没有执行任何操作。尽管您将 loopRecv 设置为 false,但您会立即进行递归调用,从而使 boolean 赋值变得无用!因此,出现了 StackOverflowError。相反,为什么不找到一种方法来迭代地实现你的方法呢?考虑打破 label 。目前还不清楚你的函数完成了什么。

关于带有定期中断的java while循环收到内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17244617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com