iOS7 UIWebView内存泄漏

时间:2013-11-02 04:11:10

标签: memory uiwebview ios7 memory-leaks

我们有一个全面的iOS应用程序,混合模式 - 一个UIWebView在JS中保存Web应用程序的主要部分。它在iOS6上运行良好,但最近我们在所有iOS7设备上发现了严重的内存崩溃 - iPad,iPhone 4 / 4S和iPhone 5 / 5C / 5S。我们在iOS模拟器中对iOS6和7上的内存消耗进行了分析。通过在应用程序中进行相同的交互,iOS6中WebView的内存消耗总是小于200MB,而iOS7上的内存消耗可能超过 800MB

我们猜测iOS7上的WebView存在严重的内存管理问题。但是缺乏在WebView中分析JS的工具,我们找不到根本原因。 在这里,我们想问一下是否有人有类似的问题,任何工具/方法都可以帮助进一步了解UIWebView以深入了解确切的问题。谢谢。

2 个答案:

答案 0 :(得分:1)

我没有足够的声誉来赞成或评论。所以我认为“答案”是我能做出贡献的唯一方式。

我同意朱明的贡献。我发现如果你有5个数字键(9999< key< = 99999),iOS 7上的内存使用量会爆炸。

下面是我尝试重现崩溃应用程序时遇到的示例代码。

tempobj = {};

for(var i=1; i<2000; i++){
    var temp = {};
    tempobj[i] = temp;
    temp[98304] = "hello world";
}

在找到这个stackoverflow之前,我还向苹果提交了一个错误,但看起来这是件好事。

答案 1 :(得分:0)

在处理json对象时,UIWebView和iOS7的本机safari浏览器似乎都在内存管理方面存在问题。 如果您的字典具有深层嵌套结构,并且您碰巧有一个键是数字字符串,并且它小于99999,那么您可能经常收到内存警告。

之类的,

 {"**98304**":
     {"key":
         {"2ndLevelKey":
             {
                "address":"10928 Homestead rd","city":"Cupertino","Zip":95014
             }
         }
     }
 }

解决方法很简单,尝试将“ 98304 ”替换为“ ID98304 ”。 希望你已经解决了这个问题。 :)