Androidで常駐してメモリを食っているアプリをいろいろと調査してみました。
再起動するとアプリの動作が軽くなるとは
そもそもの発端はFGOをプレイしていて妙に反応が悪くなったときに再起動したら治ったみたいなところからです。
一時対処としてはこれで良いのですが、しばらくするとやっぱりだんだん反応が悪くなるのでどうしたものかと思っていました。
メモリとswapを調査してみる
経験上、メモリが足りなくてswapが発生してるときに似てるな…と思い、確認してみると見事にswapに突入していました。
> adb shell free total used free shared buffers Mem: 3790626816 3405090816 385536000 0 9011200 -/+ buffers/cache: 3396079616 394547200 Swap: 536866816 506179584 30687232
しかも500MBとかやばくないですか。
一応、freeが385MB、cacheも394MBあるようなので動作に問題は無いと思いたいですが。
swap領域がSDカードに作られてたら完全にアウトだなと思って確認しましたが、zRAMみたいなのでそこは大丈夫でした。
swapは自分で設定したわけではないです。4.4からzRAMが使用できるみたいで、Phab2 Proはこれをswapに設定している感じでしょうか。
>adb shell cat /proc/swaps Filename Type Size Used Priority /dev/block/zram0 partition 524284 524184 -1
メモリを消費しているプロセスを特定する
どのようなプロセスがメモリを消費しているかを特定していきます。
> adb shell ps
とするとプロセス(パッケージ名)と消費メモリが分かるので、それをテキストファイルに保存して表計算ソフトに貼り付け、RSSでソートして調査しました。
そのパッケージ名と使用メモリ量を元に、起動直後にメモリを食っているアプリを取捨選択していきました。
主に削除したのは次のようなアプリ。といっても今あまり使ってないってだけで、困ったらまたインストールすればいいかなと思ってます。
ただ、常駐する必要を感じないアプリがいつのまにか起動してきてるのはちょっともにょっとしましたね。そういうのはやめてほしい。メモリやCPUを使わないんであればまだ良いんですが。
・Booking (153MB)
ホテル予約サービスのアプリ。常に使うものじゃないので削除。その割に一番メモリ食ってたなあ…
・ジョルテ (108MB)
カレンダーアプリ。カレンダーの表示に使っていてデザイン的にも割とお気に入りだったけど、108MBはつらい。
どのみち入ってるGoogleカレンダーに置き換えてしまいました。
・Facebook (74MB)、Facebookメッセンジャー(88MB)
使わないこともないけどアプリじゃなくてブラウザでもいいかな(中身一緒っぽいし)と思って、ブラウザのショートカットをホームに置いてアプリは削除。
・Amazon公式アプリ (81MB)、com.amazon.avod.thirdpartyclient (111MB)、com.amazon.venezia (74MB)
これも買い物するときにブラウザでいいかなと思ってショートカットを作って削除。
com.amazon.avod.thirdpartyclientはプライムビデオの、com.amazon.veneziaはアプリストアのパッケージ名のようだけどアプリ一覧からは見当たらなくて、adb uninstallで直接削除しました。
AmazonMusicは入っているし、どこかで追加インストールしてるのかもしれない。
・AnTuTuベンチマーク (66MB)、push (61MB)
ベンチマーク取ったまま放置してたら何故か起動してきていた。必要になったら入れれば良いと思って削除。
・DMMぱちタウン (45MB)
スマホで検索すると回数制限が掛かって有料プランに誘導されるクソ仕様のp-worldの代わりにと思ったんですけど全然使いづらくて結局使ってなかったから削除。
・Simple Stopwatch (37MB)
ストップウォッチアプリです。それ自体は悪くないのですが常時起動している必要は無いので削除。
結果
・PSで集計したメモリ使用量
before | after |
4466MB | 3534MB |
・free
befoer:
total used free shared buffers Mem: 3790626816 3405090816 385536000 0 9011200 -/+ buffers/cache: 3396079616 394547200 Swap: 536866816 506179584 30687232
after:
total used free shared buffers Mem: 3790626816 3720249344 70377472 0 290414592 -/+ buffers/cache: 3429834752 360792064 Swap: 536866816 102256640 434610176
PSで見ると1GBくらいは節約できた感じ。そもそもAndroidとQualcommのプロセスが食い過ぎです…(3GBくらいあるんじゃないか)
端末のOSバージョンが6なので、7や8だともっとよくなっているのでしょうか。
freeのほうはswapが明らかに減って、本体メモリのほうはより使ってる感じがあります。swapに逃げるぶんが減った感じなのかなと思いますがなんかメモリがどう使われてるかについてはもうふわっとしかわからん。
ともかくこれで様子を見ていきたいと思います。
(8/24追記)
とりあえず1日過ごしてみましたが全体的にさくさく動くようになってめっさ快適。
簡単な確認方法
今回はadbから調査してしまいましたが、おおまかに確認するのであれば「設定 > メモリ > アプリのメモリ使用状況」でも良いかもしれません。
ただしこちらは、たとえば3時間ごとの平均だったりするようなので、目安程度に捉えておくのがよいと思います。(普段使いしてないアプリがメモリを使ってないかなあ程度)
またメモリクリーナーなどお使いの方は、起動直後にそれらで確認してもよいかもですね。私は使っていないので分からないのですが。
この問題はメモリを使ったアプリが起動直後から常駐しているみたいなところなので、タスクキルだけではなくアンインストールまで行う必要があるところがポイントです。そのようなアプリを見つけたらアンインストールしてみると改善するかもしれません。