Android で ps コマンドを使用して、アプリケーション (通常の Java ベースのアプリ) が使用しているメモリを特定しています。可能な限り多くのメモリを割り当てるテスト アプリがあります (割り当てが失敗するまで、1 メガバイトのバイト配列を繰り返し作成してリストに追加し、参照から外れないようにします)。
テスト アプリの ps によって表示される "RSS" (Resident Set Size) 列は賢明なようです。アプリの起動時は低く、大量のメモリを割り当てた後ははるかに高くなります。しかし、VSIZE/VSS 列は最初は非常に高く、変化しません。Android で ps によって報告された VSIZE/VSS 列の意味は何ですか?
これは、メモリを明示的に割り当てる前のテスト アプリの ps の出力です。単位はキロバイトです
USER PID PPID VSIZE RSS WCHAN PC NAME
u0_a55 2271 91 468664 30008 ffffffff 00000000 S com.dave.quicktest
そして、これは、使い果たされるまでメモリを割り当てた後です。
USER PID PPID VSIZE RSS WCHAN PC NAME
u0_a55 2271 91 468692 287232 ffffffff 00000000 S com.dave.quicktest
RSS が 30mb から 287mb に増加した場合、この差は割り当てられたメモリの量とほぼ一致します。しかし、VSIZE は最初 468 MB であり、あまり変化しません。なんで?
また、Android OS が実際にページファイル/スワップ スペースを使用していないことを確認できますか? そうするようにビルド/構成することが可能であることは間違いありませんが、通常のストックOSビルドでは、ストレージへのVMページングを行うことはありますか?
みんなありがとう!