我们有一个全面的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以深入了解确切的问题。谢谢。
答案 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 ”。 希望你已经解决了这个问题。 :)