私はプロジェクトに phonegap を使用しています。ある時点で、ユーザーのアドレス帳全体を取得する必要があります。iOS では問題なく動作しますが、Android では 2 秒かかることもあれば、最大 20 秒かかることもあります。
それだけの時間がかかると、大量のGC_CONCURRENT
LogCatGC_FOR_ALLOC
メッセージが表示されます。
05-07 18:01:40.869: D/dalvikvm(17847): GC_CONCURRENT freed 379K, 16% free 9756K/11527K, paused 24ms+23ms, total 97ms
05-07 18:01:42.650: D/dalvikvm(17847): GC_CONCURRENT freed 288K, 15% free 9865K/11527K, paused 30ms+21ms, total 98ms
05-07 18:01:44.132: D/dalvikvm(17847): GC_CONCURRENT freed 292K, 14% free 9972K/11527K, paused 26ms+22ms, total 114ms
05-07 18:01:46.064: D/dalvikvm(17847): GC_CONCURRENT freed 276K, 13% free 10121K/11591K, paused 24ms+14ms, total 116ms
05-07 18:01:47.425: D/dalvikvm(17847): GC_CONCURRENT freed 246K, 13% free 10273K/11719K, paused 13ms+12ms, total 65ms
05-07 18:01:49.197: D/dalvikvm(17847): GC_CONCURRENT freed 335K, 13% free 10368K/11911K, paused 14ms+16ms, total 72ms
05-07 18:01:50.638: D/dalvikvm(17847): GC_FOR_ALLOC freed 83K, 14% free 10405K/11975K, paused 32ms, total 32ms
05-07 18:01:51.329: D/dalvikvm(17847): GC_FOR_ALLOC freed 68K, 14% free 10438K/12103K, paused 37ms, total 37ms
05-07 18:01:51.329: I/dalvikvm-heap(17847): Grow heap (frag case) to 11.436MB for 130826-byte allocation
05-07 18:01:51.379: D/dalvikvm(17847): GC_FOR_ALLOC freed 0K, 14% free 10566K/12231K, paused 49ms, total 49ms
05-07 18:01:52.480: D/dalvikvm(17847): GC_FOR_ALLOC freed 105K, 15% free 10487K/12231K, paused 34ms, total 34ms
05-07 18:01:52.490: I/dalvikvm-heap(17847): Grow heap (frag case) to 11.545MB for 196234-byte allocation
05-07 18:01:52.520: D/dalvikvm(17847): GC_FOR_ALLOC freed 127K, 16% free 10551K/12423K, paused 36ms, total 36ms
05-07 18:01:55.303: D/dalvikvm(17847): GC_FOR_ALLOC freed 233K, 15% free 10658K/12423K, paused 33ms, total 33ms
05-07 18:01:55.363: D/dalvikvm(17847): GC_FOR_ALLOC freed 1039K, 21% free 9837K/12423K, paused 36ms, total 36ms
それを調べたところ、メモリの解放に関連していることがわかりました。残念ながら、それは私のコードに依存していません。これらすべてのメッセージを生成するコードは、cordova フレームワークの一部です。
連絡先のフェッチを高速化する方法、またはそれらの「メモリリーク」を回避する方法はありますか?
cordova プロジェクトはオープン ソースなので、github へのリンクは次のとおりです。
https://github.com/apache/cordova-android/tree/master/framework/src/org/apache/cordova
これは私には重すぎますが。私は、これらのメモリの問題を回避するために何ができるかを知るほど、Java が得意ではありません。
たぶん、それについて私にできることは何もありません。
とにかくありがとうございました !