9

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

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

4

2 回答 2

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 之前,我也确实向苹果提交了一个错误,但看起来这无论如何都是一件好事。

于 2014-03-04T03:47:18.740 回答
0

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

就像是,

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

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

于 2013-11-14T21:53:00.240 回答