文档章节

UIWebView内存占用过高、崩溃、内存溢出

TomatosX
 TomatosX
发布于 2015/03/16 22:38
字数 261
阅读 7722
收藏 3
UIWebView内存占用过高、崩溃、内存溢出,有需要的朋友可以参考下。

项目当中模拟器上运行UIWebView读取本地杂志,没问题,真机测试经常内存溢出崩溃。
查了资料因为Html里的js 导致的内存泄漏,每次打开一个连接就会把“WebKitCacheModelPreferenceKey”设置成1。
UIWebView 增加
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"];
}
解决问题
原因:
Your are going to have a big memory usage and leak a lot of data!

But there is a hack to solve this problem: revert what is done when you open a link.
In fact, the key property which leads to this leak is the WebKitCacheModelPreferenceKey application setting. And when you open a link in a UIWebView, this property is automatically set to the value "1". So, the solution is to set it back to 0 everytime you open a link. You may easily do this by adding a UIWebViewDelegate to your UIWebView :
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"];
}

So are you going to have much less crash due to "Low Memory" :)

崩溃次数减少很多。

国外小哥原文地址:http://blog.techno-barje.fr//post/2010/10/04/UIWebView-secrets-part1-memory-leaks-on-xmlhttprequest/

本文转载自:http://www.wl566.com/wz/116180.html

TomatosX
粉丝 23
博文 207
码字总数 119547
作品 0
成都
iOS工程师
私信 提问
Interllij idea Tomcat 内存调优

最近尝试从eclipse转向Interllij Idea。遇到了很多问题。不过大多数网上百度百度也就解决了。 现在遇到一个棘手的问题,就是Interllij Idea启用Tomcat作为服务器占用内存过大,导致服务崩溃,...

GoogleFan
2015/12/23
1K
0
iOS涂色涂鸦效果、Swift仿喜马拉雅FM、抽屉转场动画、拖拽头像、标签选择器等源码

iOS精选源码 LeeTagView 标签选择控件(http://www.code4app.com/thread-31033-1-1.html) 为您的用户显示界面添加美观的加载视图(http://www.code4app.com/thread-31038-1-1.html) Swift4: 可......

sunnyaigd
2018/09/19
31
0
Echarts3图表内存溢出解决方案咨询

@Kener-林峰 你好,想跟你请教个问题:我们在手机端APP中大量使用了Echarts3图表做统计,现在出现了占用内存在不断叠加增长,最终导致内存溢出APP闪退或崩溃的问题,按照API进行了dispose,问...

ok_peak
2017/02/20
966
3
java多线程之:创建开启一个线程的开销

---->关于时间,创建线程使用是直接向系统申请资源的,这里调用系统函数进行分配资源的话耗时不好说。 ---->关于资源,Java线程的线程栈所占用的内存是在Java堆外的,所以是不受java程序控制的...

无信不立
2016/08/11
0
0
深入理解JVM——JVM性能调优实战 原

如何在高性能服务器上进行JVM调优? 为了充分利用高性能服务器的硬件资源,有两种JVM调优方案,它们都有各自的优缺点,需要根据具体的情况进行选择。 1、采用64位操作系统,并为JVM分配大内存...

Theriseof
2018/11/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS盒子模型

一、什么叫框模型 页面元素皆为框(盒子) 定义了元素框处理元素内容,内边距,外边距以及边框的计算方式 二、外边距 围绕在元素边框外的空白距离(元素与元素之间的距离) 语法:margin,定...

wytao1995
16分钟前
1
0
Replugin借助“UI进程”来快速释放Dex

public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInsta......

Gemini-Lin
今天
4
0
Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部