如何在移动设备上获取可靠的内存信息?
How to get reliable memory info on mobile devices?
我目前正在开发一款在 iOS 和 Android 上运行的应用程序。该应用程序的核心是用 C++ 编写的,并随着时间的推移分配越来越多的内存。问题是我希望同时能够使用尽可能多的内存并确保应用程序的稳定性。
当然,为此我需要知道我还能使用多少内存。这样,如果一段时间后我发现我需要的比可用的更多,我可以停止分配而不是被 OS 杀死或崩溃。
问题是,在阅读并尝试了不同的解决方案之后,我的感觉是您动态获取的信息不够可靠。例如,在 iOS:
[NSProcessInfo processInfo].physicalMemory
这是我读过的典型例子/答案之一,似乎不可靠。似乎您无法动态获取足够的信息来确保您仍然有足够的内存,因为如果 OS 使用过多内存并之前发送警告,它会在某个时候终止您的应用程序。但它也可以杀死中间的其他应用程序,所以当我收到第一个时停止似乎不是最佳解决方案。
看了很多帖子,我对这个话题有点困惑。有没有办法动态可靠地知道我的应用程序在 iOS/Android 上还剩多少内存?或者这些 OS 的内存管理太难以预测了?
感谢您的帮助!
根据设计,操作系统禁止您用完设备上的所有物理内存;更重要的是,操作系统和其他应用程序的要求 运行 意味着您的应用程序可以轻松使用的内存量会随着时间的推移而变化。
因此询问您还剩下多少内存是不明智的。您应该将您的应用程序设计为使用尽可能少的内存,然后进行优化,直到使用的内存少于该内存。
- 积极将内容缓存到磁盘。
- 听取 OS 提供的关于您的记忆力不足的通知。
- 以这样的方式设计您的应用程序,以便您可以从新启动恢复其最后的 UI 状态:应用程序启动和任务切换以相同的方式呈现给用户,它们不会也不应该'不需要知道区别。
如果您确实使用了越来越多的内存,OS 将尝试终止其他应用程序以为您的应用程序腾出空间。这意味着,再见 Facebook,再见 Twitter,再见 Mail,再见 Contacts。您的用户 会 注意到,他们 会 选择不那么频繁地启动您的应用程序,或者对它的评价不那么好,因此。
我目前正在开发一款在 iOS 和 Android 上运行的应用程序。该应用程序的核心是用 C++ 编写的,并随着时间的推移分配越来越多的内存。问题是我希望同时能够使用尽可能多的内存并确保应用程序的稳定性。
当然,为此我需要知道我还能使用多少内存。这样,如果一段时间后我发现我需要的比可用的更多,我可以停止分配而不是被 OS 杀死或崩溃。
问题是,在阅读并尝试了不同的解决方案之后,我的感觉是您动态获取的信息不够可靠。例如,在 iOS:
[NSProcessInfo processInfo].physicalMemory
这是我读过的典型例子/答案之一,似乎不可靠。似乎您无法动态获取足够的信息来确保您仍然有足够的内存,因为如果 OS 使用过多内存并之前发送警告,它会在某个时候终止您的应用程序。但它也可以杀死中间的其他应用程序,所以当我收到第一个时停止似乎不是最佳解决方案。
看了很多帖子,我对这个话题有点困惑。有没有办法动态可靠地知道我的应用程序在 iOS/Android 上还剩多少内存?或者这些 OS 的内存管理太难以预测了?
感谢您的帮助!
根据设计,操作系统禁止您用完设备上的所有物理内存;更重要的是,操作系统和其他应用程序的要求 运行 意味着您的应用程序可以轻松使用的内存量会随着时间的推移而变化。
因此询问您还剩下多少内存是不明智的。您应该将您的应用程序设计为使用尽可能少的内存,然后进行优化,直到使用的内存少于该内存。
- 积极将内容缓存到磁盘。
- 听取 OS 提供的关于您的记忆力不足的通知。
- 以这样的方式设计您的应用程序,以便您可以从新启动恢复其最后的 UI 状态:应用程序启动和任务切换以相同的方式呈现给用户,它们不会也不应该'不需要知道区别。
如果您确实使用了越来越多的内存,OS 将尝试终止其他应用程序以为您的应用程序腾出空间。这意味着,再见 Facebook,再见 Twitter,再见 Mail,再见 Contacts。您的用户 会 注意到,他们 会 选择不那么频繁地启动您的应用程序,或者对它的评价不那么好,因此。