【问题标题】:Memory continues to increase when loading images to Webview + Safari将图像加载到 Webview + Safari 时内存继续增加
【发布时间】:2012-04-23 14:43:04
【问题描述】:

我加载 HTML 文件,该文件使用 Javascript 文件将图像加载到 WebView。每次当我将 html 文件加载到 Web 视图时,它都会显示活动监视器中增加了一些内存。甚至,当我释放 Webview 时,它也不会释放内存。

我没有缓存 Webview 中的资源。但是,当我使用仪器分析内存时,它显示图像资源缓存在内存中,没有被释放。

我尝试在 Safari 浏览器中加载相同的 HTML 文件,我发现了相同的行为。

谁能指导我在哪里失踪?如何优化 WebView 的内存加载?

【问题讨论】:

    标签: image cocoa memory safari webview


    【解决方案1】:

    不要使用 Activity Monitor 来分析应用中的内存性能。

    使用Instruments 应用程序及其提供的各种内存相关工具,例如分配和泄漏。然后,您将能够确定您的应用是否真的在泄漏。

    【讨论】:

    • 感谢 Rob 的快速回复。正如我提到的,我使用了 Instruments,从那里我才知道 WebView 在将图像加载到 WebView 时会占用内存。
    【解决方案2】:

    更多输入我如何避免在 WebView 中缓存。

    我正在使用下面的代码来删除缓存。

        [[NSURLCache sharedURLCache] setMemoryCapacity:0];
        [[NSURLCache sharedURLCache] setDiskCapacity:0];
    
    
        WebPreferences *the_pPrefs = [m_pWebView preferences];
        [the_pPrefs setCacheModel:WebCacheModelDocumentViewer];
        [the_pPrefs setUsesPageCache:NO];
        [m_pWebView setResourceLoadDelegate:self];
    

    即使我在下面的委托方法中处理资源加载请求。

    - (NSURLRequest *)webView:(WebView *)sender 
                resource:(id)identifier 
         willSendRequest:(NSURLRequest *)aRequest 
        redirectResponse:(NSURLResponse *)redirectResponse 
          fromDataSource:(WebDataSource *)dataSource
    {
          NSURL * url = [aRequest URL];
          NSURLRequest * cachelessRequest = [NSURLRequest requestWithURL:url    cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:100];
          return cachelessRequest;
    }
    

    我希望我做正确的事情来避免缓存。请给出你的想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 2014-12-19
      相关资源
      最近更新 更多