0

我一直在使用复杂的 hashmap 结构在 android 上运行一些测试。

我的结构看起来像这样:Map<Class<?>, HashMap<Object, Class<?>> mymap;并且我准备了一个迭代器Iterator< object > iterator; 这个结构一次可以容纳大约 1,000 个对象。现在我需要能够非常快速地迭代这些对象。

我通常会返回我的对象​​集合,手动转换它们并迭代该集合。这就是我的问题出现的地方。

我愿意Collection < object > returnedobjects = get all mymap.get(class).getvalues。然后我做iterator = returnedobjects.iterator;然后我做

while(iterator.hasNext())
{
  Box b = (Box)iterator.next();
  do box operations;
}

或者我试试这种方式

for(Object o : returnedObjects)
{ 
  Box b : (Box) o;
  do box operations;
}

现在有了这个设置,垃圾收集器就像疯狂的示例输出一样运行:

10-26 13:56:17.793: D/dalvikvm(5518): GC_CONCURRENT freed 3639K, 57% free 3543K/8195K, paused 15ms+18ms, total 135ms
10-26 13:56:21.013: D/dalvikvm(5518): GC_CONCURRENT freed 1753K, 57% free 3526K/8195K, paused 13ms+21ms, total 92ms
10-26 13:56:24.363: D/dalvikvm(5518): GC_CONCURRENT freed 1743K, 57% free 3525K/8195K, paused 24ms+17ms, total 116ms
10-26 13:56:27.653: D/dalvikvm(5518): GC_CONCURRENT freed 1738K, 57% free 3527K/8195K, paused 13ms+16ms, total 102ms
10-26 13:56:30.913: D/dalvikvm(5518): GC_CONCURRENT freed 1739K, 57% free 3526K/8195K, paused 14ms+18ms, total 95ms
10-26 13:56:34.153: D/dalvikvm(5518): GC_CONCURRENT freed 1737K, 57% free 3528K/8195K, paused 15ms+18ms, total 97ms

只要我的应用程序正在运行,它就会继续以这种速度运行。

有没有什么方法可以管理我所有的对象,而不会让 gc 以如此疯狂的速度运行?

4

0 回答 0