我在Android上使用ps命令来确定应用程序正在使用的内存(只是一个普通的基于Java的应用程序)。我有一个测试应用程序,它分配尽可能多的内存(通过重复创建1兆字节的数组并将它们添加到列表中,以便它们不会超出引用范围,直到分配失败)。在Android上,当应用程序未分配任何内容时,为什么ps命令会显示高虚拟内存?
的“RSS”(驻留集大小)的PS用于测试应用中显示的列似乎是合理的 - 当应用程序启动时,它是低,再经过我已经分配大量内存是高得多。但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操作系统不会在实践中使用的页面文件/交换空间?我不怀疑有可能构建/配置它,但是在正常的库存操作系统构建中,它是否会对存储进行虚拟机分页?
谢谢你们!
感谢您的回答。那么你是说,do _not_显示的RSS列包含与其他进程共享的VM页面,但VSIZE/VSS列_does_包含与其他进程共享的VM页面? – 2013-05-06 17:29:33