2013-11-02 43 views
9

我们有一个全面的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以挖掘确切的问题。谢谢。iOS7 UIWebView内存泄漏

+1

这似乎与http://stackoverflow.com/questions/19150961/ios7-webkit-crashes-frequently-not-freeing-up-memory –

回答

0

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

类似,

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

周围的工作很简单,尝试更换键 “” 像 “ID98304”。 希望你已经解决了这个问题。 :)

+0

当这个问题将被修复? – wawanopoulos

+0

错误15476175于11月14日提交给苹果公司,迄今为止没有更新状态。 –

1

我没有足够的声望来upvote或评论。所以我认为“答案”是我可以贡献的唯一方式。

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

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

tempobj = {}; 

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

在找到这个计算器之前,我也向苹果提交了一个bug,但看起来这是一件好事。