什么被认为是iOS应用程序内存使用的正常行为?

时间:2017-02-28 07:55:02

标签: ios memory memory-management xamarin xamarin.ios

我正在使用Xamarin.iOS开发应用程序。众所周知,它的记忆处理效率非常低,泄漏几乎是不可避免的。这就是为什么我要尽可能小心谨慎而不做任何愚蠢的事情:没有循环依赖,没有事件听众没有被删除等等。我使用Instruments来监控我的应用使用的资源。我有以下应用程序设计: 有一个UIViewControllerA有一个UITableView和几个标签/按钮。当您按下三个表条目中的任何一个时,您分别导航到UIViewControllerBUIViewControllerCUIViewControllerD。它还会产生一些HTTP请求。每个控制器还有标签,图形,表格,滚动视图,按钮等,它们也可以发出HTTP请求。我正在测试我的应用,从UIViewControllerA到那三个并随机返回。同时,我可以看到,随着新UIViewControllers的每次新外观,Instrument的资源监视器的Real Memory列增加了1-2MB。它永远不会失败。由于我不知道内存应该如何表现,并且由于几乎没有关于该主题的信息,我不知道这是否被认为是iOS应用程序的正常行为。好吗?我确实意识到我的问题很模糊,但我需要知道我是否需要注意那些"标志"。

1 个答案:

答案 0 :(得分:1)

如果不深入了解您的代码以及它究竟在做什么,我会说这不是正常的行为。如果你在ControllerA,B和A之间切换,它也应该释放一些内存。一个好的内存使用应该看起来像一个起伏的锯刀。

一般问题是GC可能无法立即释放内存。如果您有像图像处理这样的内存繁重的操作,您可以考虑使用GC.Collect() - 但这应该是您的最后选择 - 强制收集并释放一些内存。

除了仪器,我也大量使用它来分析我的应用程序,是Xamarin Profiler,以获得更多关于仍然存在的东西的见解,并保留一些参考。如果由于某种原因你无法使用Xamarin Profiler,请使用名为Heap Shot的构建工具。