我在 Android 上使用 ps 命令来确定应用程序正在使用的内存(只是一个普通的基于 Java 的应用程序)。我有一个测试应用程序,它分配尽可能多的内存(通过重复创建 1 MB 字节数组并将它们添加到列表中,这样它们就不会超出参考,直到分配失败)。
ps 为测试应用程序显示的“RSS”(驻留集大小)列似乎是明智的 - 当应用程序启动时它很低,然后在我分配了一堆内存之后它会高得多。但是 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 一开始是 468mb,变化不大。为什么?
另外,我可以确认 Android 操作系统实际上不使用页面文件/交换空间吗?我不怀疑可以构建/配置它来这样做,但在正常的库存操作系统构建中,它是否曾经对存储进行 VM 分页?
多谢你们!