程序缓慢并随着时间的推移降低性能

问题描述 投票:1回答:2

我的程序是一个Java游戏,涉及在用户和AI之间轮流。因此,在所有操作完成后,我有一个无限的while循环,只有在转弯发生变化后才会中断。我只使用无限循环,因为我使用的是计时器,无法预测用户何时结束轮到他们。但是我注意到我的程序随着时间的推移而减慢到甚至点击按钮都没有效果的程度。这是我的循环造成的吗?帮助将不胜感激。

while(true) {
    if(playerTurn % 2 == 1) {
        artificialIntelligence();
        break;
    }
}
java performance loops while-loop infinite-loop
2个回答
1
投票

如果你使用无限循环(在你的情况下循环),这个操作将连续执行;从而减慢你的申请。因此,我建议将代码分成两个线程。

第一个线程 - 检查用户转弯事件。

第二个线程 - 做AI的东西。

一旦用户事件发生,停止线程并执行所需操作。这样你的代码就不会在任何时候被阻止;从而产生更好的性能。


1
投票

如果没有更多代码,很难确定问题的真正原因是什么。但是,一个嫌疑人可能是您正在持有对象引用,并且它们不会被垃圾回收回收。尝试使用java分析器,它可以帮助您确定问题的确切位置。

© www.soinside.com 2019 - 2024. All rights reserved.