【发布时间】:2012-03-29 13:14:19
【问题描述】:
所以,我第一次使用 Monkey 测试测试了我的游戏。我设法在没有崩溃的情况下运行了大约 3 分钟,但最终由于内存不足错误而崩溃,我正在尝试弄清楚如何让它变得更好。
我的程序结构如下:
- 有一个前屏可以启动一个活动。
- 次要活动是大部分动作发生的地方,也是我崩溃的地方。
- 我在执行充气命令时崩溃
- 我的游戏强制竖屏模式,1个布局比2个工作更容易...
- 有许多与我的次要活动相关的类变量。我将在下面包括非静态的。我还为那些不明显的东西提供了一些线索。
我想知道的是如何改进程序的内存管理使其不会崩溃。我怀疑我需要手动删除其中一些变量,但我不确定这样做的正确位置是什么。谢谢!
private Level_Score_bar score_bar; // Custom view
private number_viewer num_viewer; // Custom view
private number_pad num_pad; // Custom View
private int time,score,level,num_remaining,current_var,change_loc,time_remaining;
private ArrayList<Integer> the_key;
private ImageView Number_to_select;
private Boolean update_viewer;
Random rseed;
Vibrator bzzz;
long ctime;
private Activity self=this;
private SharedPreferences prefs;
private Editor prefs_edit;
内存不足
setContentView(R.layout.level_layout);
这种布局相当复杂,包含多个图像视图、按钮、文本视图等。
【问题讨论】:
-
很高兴知道您在代码中的哪个位置获得了 OOM。如果可以,请发布堆栈跟踪和相关代码。不是很相关,但根据 Java 命名约定,变量不应该有下划线(除非它是静态 final),而是与下一个单词中的第一个字母大写:docs.oracle.com/javase/tutorial/java/nutsandbolts/…
-
@Jave:包含内存不足的行。有一天我也应该学习 Java 约定,我可能会继续努力……
-
R.layout.level_layout包含什么?大图还是类似的? -
@Jave:很多东西,但有几个图像视图、图像按钮、文本视图等。它们都不是特别大,但我想它们加起来。
-
你试过System.gc();调用手动垃圾收集器?
标签: java android memory-management memory-leaks