......当它在前景时。
对于拥有256MB RAM的原始iPad,我发现我的应用程序在被杀之前最多可以使用100-140MB。
现在的情况如何?我可以去买一堆iDevices并自己做一个测试,但我想检查一下:有人做过测试吗?
我知道这没有一个确切的答案,而且我正在寻找一个范围,例如:“应用程序在512MB设备上使用300-350MB时会被杀死。您可以放心使用高达300MB。”
特别:
我指的是进程使用的总内存 - 堆,堆栈,静态数据,代码,Core Animation后备存储等。
如果您倾向于说它取决于操作系统版本,您可以假设我们正在谈论iOS 7。
我知道使用太多内存意味着当我的应用程序进入后台时,iOS会更快地终止它。我现在对这个权衡很好。
我编写了一个测试应用程序来测量应用程序在被杀之前可以分配多少内存。这是数字:
有趣的是,我从未收到过记忆警告。
如果您想自己运行测试,请输入以下代码:
import UIKit
let sizeInMb = 100
class Wrapper {
var array = [UInt8](repeating: 0, count: sizeInMb * 1048576) // 100 MB
}
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
var i = 0
sleep(5) // So that you can see how much memory it consumes before any allocations.
while true {
let w = Wrapper()
Unmanaged<Wrapper>.passRetained(w)
i += 1
print("\(i * sizeInMb) MB allocated")
sleep(1) // Give the OS a chance to kill other processes.
}
return true
}
func applicationDidReceiveMemoryWarning(_ application: UIApplication) {
print("Memory warning!")
}
}
截至2014年,我的最低硬件测试设备是运行iOS7的iPhone 4s,安装了约50个应用程序。重启后,操作系统可以从512个中释放200mb。经过一周的常规使用后,它可以管理的最好的是100mb。
我正在开发一个Adobe AIR应用程序,它不会从操作系统收到低内存警告。如果它接近极限,它就会崩溃。因此,如果您想在总共512mb的设备上运行,请尽量保持在100mb以下。请记住,这是针对gpu和cpu的组合。
嗨,我刚用我的应用程序测试,对于512MB设备,应用程序将在250mb使用后随时崩溃,给出“内存压力”问题。