gpt4 book ai didi

Java Swing 游戏随着时间的推移而滞后

转载 作者:行者123 更新时间:2023-12-02 00:01:43 24 4
gpt4 key购买 nike

我正在使用 Java Swing 制作一个游戏,我发现游戏运行一段时间(10 分钟左右)后,图形开始严重滞后。游戏循环报告以恒定的 FPS 运行。

现在我有了它,一旦游戏循环触发,重绘也会被调用。如果我不同步图形,则绘制的不同部分会在屏幕上可见,速度非常慢。任务管理器显示它使用的内存几乎相同,但 CPU 使用率随着时间的推移逐渐增加。如果我不得不猜测,那一定是我没有使用 Swing 来正确绘制。

我目前用于绘图的流程是这样的:

  • 转换graphics2D对象
  • super 绘制图形对象
  • 每个对象都使用该图形对象绘制其图形。
  • 工具包同步
  • 处理图形

面板是setDoubleBuffered(true)

知道可能出了什么问题吗?

编辑:

我无法让我的 SSCCE 滞后,所以我回去重新测试了每个绘制函数,结果是

    int ilen = drawActorQueue.size();
for (int i = 0; i < ilen; i++)
{
GameActor oo = drawActorQueue.get(i);
oo.draw(g2d, viewX, viewY);
}

似乎是导致问题的原因。

我认为这是因为drawActorQueue实际上包含指向两种类型对象的指针,而GameActor只是基类。

看起来确实是这样吗?我认为我可以通过使用接口(interface)或让列表指向 2 个子对象的特定数组来修复它。

编辑:!@#$%^只是我太愚蠢了,没有清除 list 。当我再次疲惫不堪时,我将永远不会编码或调试。

最佳答案

确保您的应用不会严重泄漏内存和 GC。使用详细 GC 日志记录运行程序以查看是否存在问题。

关于Java Swing 游戏随着时间的推移而滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14703510/

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