複雑なハッシュマップ構造を使用して、アンドロイドでいくつかのテストを実行しています。
私の構造は次のよう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 をそんなに狂ったペースで実行せずに、すべてのオブジェクトを管理する方法はありますか?