iphone - UIWebView 加载 .RTF 文件时泄漏内存?

标签 iphone memory memory-leaks uiwebview memory-management

尝试通过 webView 加载 .rtf 文件 (2.4 MB),如下所示:

 NSURL *docURL = [NSURL fileURLWithPath:docPath];
NSData *data = [NSData dataWithContentsOfURL:docURL];
NSString *mimeType = //receiving proper mime type here
[webView loadData:data MIMEType:mimeType textEncodingName:@"utf-8" baseURL:docURL];

加载此类文件会导致内存增长,直到应用程序崩溃。根据 Instruments 的说法,即使在完全释放包含 Controller 和 webView 本身的 webView 之后,内存也会继续增长。在应用程序的其他位置,使用其他应用程序功能,内存会增长,就好像我仍在继续浏览该 .RTF 文件一样。

当关闭/解除 Controller 时,我也会执行所有操作来释放 WebView。 即:mainWebview.delegate = nil; [mainWebview停止加载]; , [mainWebview removeFromSuperview]; , [mainWebview 发布]; 。 (甚至尝试执行以下操作:[mainWebview loadHTMLString:@""baseURL:nil];)

我在仪器中看到的: enter image description here

有人有什么想法吗? 谢谢。

编辑:我在 Safari、Chrome、Mercury 浏览器上测试了一些大型 .RTF 文件 (700 Kb - 2.4 Mb)。同样的事情到处都会发生,无论是模拟器还是设备。我猜这是 WebKit 中的一些错误。

一般情况:浏览器使用过多的内存来处理此类文件。 90% 的情况只是异常退出并出现“崩溃”或“内存不足”信号。如果设备在加载文件时处理峰值内存使用情况,那么内存会恢复正常,如果没有,则会崩溃。

最佳答案

在使用 UIWebView 时,我还遇到了一些与内存管理相关的问题。 In my case ,我发现行为发生了很大变化,具体取决于我将数据加载到 Web View 中的方式。对于你的情况,我没有解决方案,但根据我的经验,也许使用:

NSURLRequest *req = [NSURLRequest requestWithURL:urlToYourRTFFile];
[webView loadRequest:req];

可能会有所作为

关于iphone - UIWebView 加载 .RTF 文件时泄漏内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12494144/

相关文章:

iphone - Xcode 5 - DVTPlugInCompatibilityUUID 中不存在所需的插件?

iphone - slider 在播放音频结束时停止

c++ - 扫描 notepad.exe 内存不适用于 Windows 10

java - 了解 Groovy/Grails 类加载器泄漏

android - DialogFragment 泄漏内存

java - 将 NSString 转换为字节数组

iphone - 如何注册应用程序以响应自定义 URL 方案打开请求?

c++ - Valgrind 无效读取大小 4 错误?

ios - 由于内存压力,应用程序不断崩溃

安卓 : How to analyse the native heap dump?