我一直在使用复杂的 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 以如此疯狂的速度运行?