Java LibGDX 内存泄漏
Java LibGDX memory leak
我们正在为我们的学校作业制作一个 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() - 否则它会泄漏。
解决方法是单独创建玩家列表(add/remove 玩家,因为他们 join/leave 游戏)并继续调用他们的渲染方法而不创建新实例。
我们正在为我们的学校作业制作一个 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() - 否则它会泄漏。
解决方法是单独创建玩家列表(add/remove 玩家,因为他们 join/leave 游戏)并继续调用他们的渲染方法而不创建新实例。