【发布时间】:2019-09-13 22:35:33
【问题描述】:
我在 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 内存呢?
【问题讨论】:
-
垃圾收集确实会释放和分配内存,而您无权访问它。您可以做的就是在高级编程中管理 RAM。
-
您遗漏了太多代码,以至于无法确定问题所在。
-
1) 使用逻辑一致的形式缩进代码行和块。缩进是为了让代码流更容易理解!大多数 IDE 都有专门用于格式化代码的键盘快捷键。 2)如需更好的帮助,请edit添加minimal reproducible example或Short, Self Contained, Correct Example。
标签: java android memory libgdx