Memory leaks 单触式存储器使用率高

Memory leaks 单触式存储器使用率高,memory-leaks,xamarin.ios,Memory Leaks,Xamarin.ios,在Xcode 4.2 SDK中,我在monotouch 5的基础上开发了monodevelop 2.8。我的iPhone应用程序一直存在内存问题。我一直在努力找出原因,所以我创建了一个带有主细节视图的测试应用程序。我对rootcontroller做了一个小修改,让它显示5个根项目,而不是默认的1个。每次单击根项目都会将新的DetailViewController添加到导航控制器中 controller.NavigationController.PushViewController (Detail

在Xcode 4.2 SDK中,我在monotouch 5的基础上开发了monodevelop 2.8。我的iPhone应用程序一直存在内存问题。我一直在努力找出原因,所以我创建了一个带有主细节视图的测试应用程序。我对rootcontroller做了一个小修改,让它显示5个根项目,而不是默认的1个。每次单击根项目都会将新的DetailViewController添加到导航控制器中

controller.NavigationController.PushViewController (DetailViewController, true);
在我的detailview控制器中,我添加了一些逻辑,这些逻辑只需获取一个控制循环发生次数的输入,然后获取一个按钮来触发循环发生并调用基于REST的服务。与默认值相比,代码更改非常少

只要运行这个示例,并在仪器中查看它,我的活动字节似乎高达1.2MB。我想通过触摸根视图控制器中的项目来启动细节视图,我得到了超过2MB的空间。旋转显示器或触发键盘打开会使内存增加近3MB。我回到控制器中,打开一个不同于rootviewcontroller的视图,我可以看到内存进一步增长。只要在不触发自定义代码的情况下进出视图,我就可以在超过3MB的仪器中使用内存。我以前见过我的应用程序在超过3MB时收到内存警告。我的测试细节视图非常基本,有一个文本框、一个标签和一个按钮,所有这些都有出口。我的印象是我不需要做任何特殊的事情来清理它们。然而,我没有看到仪器中的实时字节下降

作为附加测试,我添加了一个Done按钮。按下“完成”按钮后,我会在每个插座上使用RemoveFromSuperview(),Dispose(),然后将其设置为null。我看到实时字节数下降了。但是,如果使用反向导航,这对我来说没有任何作用


我很好奇是否有人能证实我对记忆减退的期望。不确定使用仪器查看活动字节是否有效。我想确定我的测试是否有效,是否有减少内存足迹的技巧。任何关于减少内存足迹的最佳实践的链接都很受欢迎,因为我似乎能够通过在屏幕之间导航来提升内存,并让我的应用程序开始获得内存警告。

如果不看到测试应用程序的代码,很难进行评论。是否有任何方法可以向您的测试项目提交bug报告并附加测试项目

MonoTouch上有一位开发人员正在努力为MonoTouch 5.2的GC添加额外的智能,我相信他希望有更多的测试用例

我也非常有兴趣查看您的测试用例