Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在 App Store 上有一个监控系统状态的应用程序。我的用户需要一个可用内存按钮来清理 RAM。我知道iOS像OS X一样管理内存,所以非活动内存实际上是空闲内存,对吧?简单地说,非活动内存有助于快速运行一些最近的应用程序。在 iOS 中如何清理内存?我看到很多应用程序都这样做,但是如何?
它的一般工作方式是分配大块内存,迫使其他应用程序放弃其非必要内存并强制关闭其他应用程序。在收到自己的内存警告之前,它们会在内部尽可能多地获取内存,然后释放所有内容。
您可以按照用户的回答执行操作,并使用mallocand循环分配内存,memset直到获得didReceiveMemoryWarning. 这将获得内存,直到您的应用程序即将被 iOS 杀死,所以应该足够了。
malloc
memset
didReceiveMemoryWarning
这个项目说明了如何做到这一点。顺便说一句,这是一个非常方便的应用程序。
有一个警告,根据我的经验,即使所有其他应用程序都处于非活动状态,iOS 也不允许将所有理论上可能的内存分配给应用程序。这个 SO 答案使用了我在许多设备中提到的项目,它证明 iOS 会为您提供一定数量的内存,而不是更多,无论设备中正在运行什么。