gpt4 book ai didi

iOS实际RAM和ProcessInfo.processInfo.physicalMemory之间的差异稳定吗?

转载 作者:行者123 更新时间:2023-12-03 21:00:53 25 4
gpt4 key购买 nike

我正在开发一个需要在低内存设备上定制的应用程序。可用的设备内存将通过以下方式快速给出:

ProcessInfo.processInfo.physicalMemory

例如:

  • iPhone SE 提供 2009.5 MB(2048 MB RAM)
  • iPhone 5s 提供 1000.0 MB(1024 MB RAM)
  • iPhone 6 提供 989.0 MB(1024 MB RAM)
  • iPhone 6+ 提供 977.0 MB(1024 MB RAM)
  • iPhone 4s 提供 504.95 MB(512 MB RAM)

根据我的理解,增量是分配给 GPU 的,并且取决于屏幕尺寸。

我可以相信给定设备始终为我提供相同的物理内存数量吗?

(例如,iPhone 6 始终为 989.0 MB)

最佳答案

看起来 physicalMemorysysctl 中的 hw.physmem(或其 macOS 等效项)相同。

我能找到的最好的描述来自 post comparing real/physical/user memory in FreeBSD :

The amount of "usable" RAM for the OS.  This subtracts offany spaces reserved by boot ROMs / BIOSes / what-have-you, andin the case of (e.g.) FreeBSD-9 on amd64, the 1 TB direct-maplimit (which you must take care of manually with the loader'shw.physmem setting).

This is what "phys mem" should be and mostly is. If you boota 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 不会更新任何这些系统,因此我们无法保证应用程序可用的物理内存将是固定的。所以我不会对这些神奇的数字进行硬编码。您可以考虑通过系统调用检索“真实”内存大小,但您也可以只使用内存桶,因为您知道物理内存始终低于但接近真实内存:

enum MemorySize {
case low, medium, high
}

extension MemorySize {
static var current: MemorySize {
if ProcessInfo.processInfo.physicalMemory < 512 * 1024 * 1024 {
return .low
} else if ProcessInfo.processInfo.physicalMemory < 1024 * 1024 * 1024 {
return .medium
} else {
return .high
}
}
}

...

if MemorySize.current == .low { /* Use low memory setup */ }

关于iOS实际RAM和ProcessInfo.processInfo.physicalMemory之间的差异稳定吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43706883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com