以编程方式获取android设备的所有RAM内存,而不仅仅是分配给用户进程的内存

otc*_*otc 3 java memory api android memory-management

我有一个我确信它有 512 MB RAM 内存的设备

希望能够以编程方式检索此值 (512 MB)。

到目前为止,我在互联网上主要遇到了这两种方式:

/sf/answers/1130014581/ 这给了我 386 MB

还有 /sf/answers/1645617501/ 这也给了 386 MB

我假设 386 MB 是用户进程可用的内存,所以我想获得所有内存或其他进程的故障。

Axe*_*xel 5

我敢打赌,您和我拥有相同的设备:Google Nexus S(或者它可能是具有类似配置的设备)。这款手机有 512 MB 的物理 RAM,但其中 128 MB 被 GPU 占用。这就是为什么只有 384 MB 可供 Android 使用,这就是系统报告的数量。从维基百科条目

Nexus S 有 512 MB 的 RAM(移动 DDR)(128MB 分配给 GPU,剩下 384MB 用于操作系统)

由于这是系统可用的所有内存(不仅仅是用户进程),因此您获得的值是正确的。

  • 我认为没有办法,因为它受硬件限制。您的设备物理上有 512mb,但硬件将其划分为系统可用的 GPU 和内存。您也许可以找出 gpu 可用的内存并将其添加到系统报告的值中。但是不知道有没有办法查出gpu内存是否在同一个物理芯片上。当然,如果两者加起来是 2 的幂,而它们中的任何一个都不是 2 的幂,那将是一个强烈的暗示,因为 AFAIK,所有 RAM 模块的内存量都是 2 的幂。 (2认同)