0

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ページングを行うことはありますか?

みんなありがとう!

4

1 に答える 1