【发布时间】:2011-06-07 15:00:15
【问题描述】:
我正在开发一款安卓游戏,我有一个关于在不触发垃圾收集器的情况下存储游戏元素的问题。
我的游戏需要一个集合,其中游戏元素根据 x、y 位置存储(所有游戏元素都有 x、y、宽度和高度)。然后每帧调用该集合以根据 cameraX、cameraY、camera 宽度和高度检索元素(用户可以在游戏中滚动)。
例子:
function draw() {
tmp = collection.getElements(tmp,cameraX,cameraY,cameraWidth,cameraHeight);
for(int i = 0; i < tmp.size(); i++) {
tmp.get(i).draw();
}
}
我目前正在使用 Vector 类来表示集合元素,但 gc 每隔几分钟就会触发一次。我预先完成所有分配。我还修改了 getElements 函数以接受另外 1 个参数 - 一个临时向量(预先分配),其中填充了元素然后返回。
- 使用哪个类来存储游戏元素以使 gc 不会触发(如果可能,我宁愿永远不要)?
- 我还在运行时将元素添加到集合中,我是否也必须预先分配它们?
谢谢,
问候 J.
【问题讨论】:
标签: android garbage-collection arraylist