我在 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/