gpt4 book ai didi

Java LibGDX 内存泄漏

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

我们正在为学校作业制作一款 2D 自上而下的射击游戏。但我们遇到了一个无法解决的问题。我们接收玩家并希望将他们全部渲染出来。当我们注释给定的代码时,延迟消失了,RAM 使用情况也稳定了。然而,当我们保留该部件时,RAM 每秒将以 50 MB/s 的速度增加。

我们在这段代码中找不到错误,如果您知道什么,请告诉我们。如果您需要更多信息,请告诉我,我会尽快回复。

            List<SimplePlayer> localMultiplayers = new ArrayList(this.multiplayers);
this.multiplayers.clear();
for (SimplePlayer splayer : localMultiplayers) {
try {
Player p = new Player(splayer, this);
batch.setProjectionMatrix(game.camera.combined);
batch.begin();
p.render(batch);
this.fontwhite.draw(batch, splayer.getName(), splayer.getX(), splayer.getY() + 76);
this.fontred.draw(batch, Integer.toString(splayer.getHitPoints()), splayer.getX() + 12, splayer.getY() + 64);
batch.end();
} catch (Exception ex) {
Logger.getLogger(GameScreen.class.getName()).log(Level.SEVERE, null, ex);
}
}

编辑:这段代码在我们的 GameScreen.render() 中找到,我们不知道这是否是问题所在。

最佳答案

Guido,别开玩笑了,它泄漏了:-)。每个渲染周期(每秒大约 60 次),您都会为每个客户端创建新的 Player 实例,其中(我只能假设)其中有某种纹理。如果你不想再使用它,你必须调用Texture.dispose() - 否则它会泄漏。

解决方法是单独创建玩家列表(在加入/离开游戏时添加/删除玩家)并继续调用其渲染方法而不创建新实例。

关于Java LibGDX 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37549199/

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