我正在开发一款需要在低内存设备上进行定制的应用。可用的设备内存将通过以下方式快速给出:
ProcessInfo.processInfo.physicalMemory
例如:
根据我的理解,delta被分配给GPU并取决于屏幕大小。
我是否可以相信给定的设备总能给我相同的physicalMemory
金额?
(例如,iPhone 6总是为989.0 MB)
答案 0 :(得分:1)
看起来physicalMemory
与来自hw.physmem
的{{1}}(或其等效的macOS)相同。
我能找到的最佳描述来自post comparing real/physical/user memory in FreeBSD:
The amount of "usable" RAM for the OS. This subtracts off any spaces reserved by boot ROMs / BIOSes / what-have-you, and in the case of (e.g.) FreeBSD-9 on amd64, the 1 TB direct-map limit (which you must take care of manually with the loader's hw.physmem setting).
This is what "phys mem" should be and mostly is. If you boot a machine with 1.5 TB of RAM but the OS is limited to 1 TB, hw.physmem should be 1 TB minus a bit for the BIOS, etc.
因此,它是设备上的实际内存减去不是iOS的内存所保留的内存。由于我们无法保证Apple不会更新任何这些系统,因此我们无法保证应用程序可用的物理内存将得到修复。所以我不会硬编码任何这些神奇的数字。你可以看一下检索"真实"系统调用的内存大小,但你也可以只使用内存桶,因为你知道物理总是低于但接近实际内存:
sysctl