高虚拟内存使用率iOS 上的低分配

发布于 2025-01-08 03:42:53 字数 271 浏览 0 评论 0原文

我的代码的活动分配量较低(根据 Instruments 大约为 5 MB),但系统内存使用量较高(超过 100 MB)。我知道代码是无泄漏的,并且经过一些优化后我没有看到任何分配峰值,但由于内存使用量很大,我仍然崩溃。

我在 Google 上搜索了很多,发现我应该使用 VM Tracker 工具,这证实了我的内存使用率很高,但我不确定如何解决这种情况。我使用尽可能少的内存,但在 iPad 1 上仍然太多,而且我没有知识或工具来弄清楚如何让操作系统在我不使用时不将这么多内存标记为脏内存实际使用它。我该去哪里?

I have code that has a low amount of active allocations (about 5 MB according to Instruments), but a high amount of system memory usage (over 100 MB). I know the code is leak-free, and I'm not seeing any allocation spikes after some optimization, but I'm still crashing due to the high amount of memory usage.

I Googled around a lot and see that I'm supposed to be using the VM Tracker instrument, which confirms my high memory usage, but I'm not sure how to address this situation. I'm using as little memory as possible, it's still too much on an iPad 1, and I don't have the knowledge or tools to figure out how to get the OS to not mark so much memory as dirty when I'm not actually using it. Where do I go from here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灵芸 2025-01-15 03:42:53

使用配置文件工具并选择内存+分配。单击虚拟机跟踪器并拍摄快照。这会生成一个列表,其中包含每个对象类型的驻留脏内存和虚拟内存使用情况。这将为您提供查看位置的指示。

我认为最常见的问题是您有很多自动释放的对象驻留在自动释放池中。以下链接解释了有关如何处理自动释放池的更多信息:
NSAutoreleasePool 自动释放池如何工作?

Use the Profile tool and select memory +allocations. Click the VM tracker and take a snapshots. This results in a list with resident dirty and virtual memory usage per object type. This will give you an indication where to look.

I think the most common problem is that you have a lot of autoreleased objects that reside in the autoreleasepool. The following link explains more on how to handle autoreleasepools:
How does the NSAutoreleasePool autorelease pool work?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文