gpt4 book ai didi

java - LibGdx - 切换屏幕时严重内存泄漏

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

我有一个带有 4 个屏幕的 UI,我的应用程序相当重,一开始使用的 RAM 约为 250MB,在我在屏幕之间来回切换几次后,它上升得很快,在崩溃之前高达 800MB RAM。

这就是我处理处置的方式:

每个屏幕扩展主屏幕,我在其中有这个处理方法:

@Override
public void dispose()
{
stage.dispose();
System.out.println("Disposing Main Screen");
}

设置新屏幕时,我这样做:

dispose();
game.setScreen(new HighScoreScreen(game));

现在,我在启动时使用 AssetManager 加载所有资源,这意味着我不会卸载/处置屏幕中的任何资源,因为这将导致下一个屏幕显示一个空的黑框所处置的 Assets 。但这有问题吗?我有很多资源,例如 8 个不同的 BitmapFonts,每次加载扩展 MainScreen 的新屏幕时都会初始化它们。但是,如果我尝试处理它们,下次尝试初始化它们时会收到错误。

唯一可以一次性使用的是纹理/字体,这就是导致我的问题的原因吗?我应该为每个屏幕加载/卸载吗?这似乎会导致大量加载带来糟糕的用户体验。

最佳答案

正如 @TomGrill Games 所说,您应该初始化一次资源,然后从主类中使用它们。您可能有一个资源类,在主类中初始化,并从那里调用您的资源。您的代码可能类似于:

game.setScreen(game.mainScreen);

game.setScreen(game.resources.mainScreen);

您还可以使用声音和其他资源来做到这一点。

关于java - LibGdx - 切换屏幕时严重内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36625967/

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