无法从UIWebView完全回收内存使用情况

我有以下示例代码(使用ARC),它将UIWebView添加为子视图,然后将其删除(通过屏幕上的点击手势切换):

 - (void)toggleWebViewLoading:(UITapGestureRecognizer *)sender { if (webView == nil) { webView = [[UIWebView alloc] initWithFrame:CGRectMake(0.0f, 100.0f, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 100.0f)]; [webView loadRequest:[[NSURLRequest alloc] initWithURL:[[NSURL alloc] initWithString:@"http://www.google.ca"]]]; [self.view addSubview:webView]; } else { [webView removeFromSuperview]; webView = nil; } } 

当应用程序最初使用空白UIView加载时,它消耗大约1.29 MB (从Instruments.app读取实时字节)。 点击空白UIView会导致toggleWebViewLoading:函数触发,然后创建一个新的UIWebView ,加载Google,并将其添加为子视图。 完成此操作序列后,内存使用量约为3.61 MB 。 再次点击执行toggleWebViewLoading:的第二部分: toggleWebViewLoading:中删除UIWebView并将其设置为nil 。 此时内存消耗已降至3.38 MB

我的问题是,如何从UIWebView中完全回收内存(即在UIWebView被删除并设置为nil之后,内存消耗是否恢复到其初始值1.29 MB或类似的东西)?

其他相关信息

在有人问为什么我非常关心~2 MB的内存节省之前,我有更复杂的情况使用Xamarin / MonoTouch,其中10 + UIWebView消耗200 MB+内存,我似乎无法回收所有不再需要时的记忆。 我认为答案归结为这个简单的问题。

我建议监控你有多少线程活跃。 UIWebView为自己生成了几个线程。 一旦取消分配UIWebView,我希望它们不会被正确清理,但这只是一种预感。