gpt4 book ai didi

java - (LIBGDX) 如何清理我的应用程序使用的 RAM 内存?

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

我在 libgdx 中创建了一个游戏应用程序,通常它运行良好,但有时它会慢动作,在我看来是 RAM 内存问题。我有一个扩展 Game.class 的主类,在主类中我创建一个播放屏幕类,当玩家死亡时我再次创建播放屏幕类。我相信内存尚未释放并且在多次死亡后会累积的RAM内存,事实上,如果我在打开任务管理器的情况下运行应用程序,当死亡增加时内存也会增加。

这是代码:

public class MyGdxGame extends Game(){
private PlayScreen play_screen;
private SpriteBatch batch;
public void create(){
batch=new SpriteBatch();

play_screen=new PlayScreen(this);

setScreen(play_screen);

}

public void render(){

if(play_screen.death==true){

play_screen=new PlayScreen(this);

setScreen(play_screen);

}

}

所以我做了一个测试:

public void render(){

do{
play_screen=null;
play_screen=new PlayScreen(this);
setScreen(play_screen);
}while(1!=2);
}

我在任务管理器打开的情况下运行该应用程序,内存迅速增加,直到崩溃。那么我该如何清理 RAM 内存呢?

最佳答案

许多 LibGDX 对象必须手动清除内存,请参阅 this 。他们实现了接口(interface)Disposable其中有方法#dispose()

我没有看到您处置任何使用过的资源,您的 SpriteBatch 是这些对象之一。完成后,调用 batch.dispose()。之后将其设置为 null 是可选的,但建议这样做,因为使用已处置的资源可能会导致意外行为。该代码看起来像这样,当您不再需要它时应该调用它:

if(batch != null) {
batch.dispose();
batch = null;
}

LibGDX 内存泄漏几乎总是因为一个或多个资源未释放

关于java - (LIBGDX) 如何清理我的应用程序使用的 RAM 内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57931026/

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