下での問題に対処するため、自前で DayDream(スクリーンセーバー)用のフォトフレーム(スライドショー)アプリを作成してみた。
目論見通り、メモリ&CPU使用率も一気に減った。めでたしめでたし…?
Android 4.2 から導入された DayDream(スクリーンセーバー)でフォトフレーム(実体は gallery3d)を選ぶと、調子のよくない日は1コアを食い尽くす状態が続くが(Nexus10上)、その際、strace/top/logcat 等でモニタしてみると、Dalvik GC が延々動いてCPUを浪費していることが判った。
具体的には「GC 起動 → ほとんど空きを見つけらずに終了 → 直ぐに GC 再起動…」、というサイクルが延々と続く。ちなみに、その時の RSS は 320MB程度。調子の良い日(CPU使用率が高くない日)の RSS は 230MB 位なので、メモリ不足が直接の引き金ではあるけれど、Dalvik GC がイマイチな印象。
それにしても、Python のように原則リファレンス==0で解放する(GC は保険としてのみ動作)モードはないものかな?
(ちなみに、Nexus10 では実メモリ 1GB、スワップ0 に対して、7GB の仮想メモリ空間割り当てになっていて驚いたり。各Dalvik プロセスが Dalvik heap という形でアドレス空間の予約を大量に行っているため)
Categories
Android |
CeSleep |
comp_misc |
comp_tips |
fastcopy |
ipmsg |
mailman |
misc |
npop |
ScheEdit |
sigsleep |
tdiary |
thinkpad