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

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/

时间: 2024-10-12 22:40:32

UIWebView内存占用过高、崩溃、内存溢出的相关文章

cocos2dx 中切换场景内存占用过高的处理

cocos2dx 中切换场景内存占用过高的处理 1.运行场景: CCScene *pScene = HelloWorld::scene(); pDirector->runWithScene(pScene); 2.替换场景: (1) CCScene *pScene=SceneTestScene::scene(); CCDirector::sharedDirector()->replaceScene(pScene); (2) CCScene *pScene=SceneTestScene::scen

CLR Profile解决内存占用过高

CLR Profile解决内存占用过高的问题 炮哥:"嘿,哥们,忙啥呢,电脑卡成这逼样." 勇哥:"在用CLR Profile工具分析下FlexiPrint的内存占用情况." 炮哥:“哎哟,不错啊,玩高级的了.” 勇哥:“也没有啊,就是发现点击查询按钮查询数据时,如果数据量一大的话,内存上上升了好几个M,所以第一感觉就不太正常.正好以前也了解过CLR Profile,但一直没怎么具休的用过,这次正好拿来研究研究.” 炮哥:“Nice job,要向你学习,能够主动发现

ITM_win_agentCPU内存占用较高

这个问题一般出现在ITM623fp1上,win agent监控的OS是win2003 而且这个问题一般会通过省级ITM来解决 以下是一些通用的解决方法 Kntcma.exe占用CPU 100%  Kntcma.exe占用内存资源较高 server安装ITM 623FP2补丁 agent安装6.2.3.2-TIV-ITM_WIN-IF0001补丁 在KNTENV文件中设置 NT_LOG_THROTTLE=1 和 NT_LOG_APPEND_XML_DATA=0 - 重建性能技术器 cd\windo

(转)aix非计算内存 占用过高 案例一则

两台小型机组成的RAC环境,在用topas查看资源使用情况时,发现一台机器的非计算内存占用过高: MEMORY Real,MB 40959 %Comp 71.6 %Noncomp 20.4 %Client 20.4 而另外一台机器的%Noncomp 只有2.4 这主要是jfs2文件系统的cache,可以用svmon -S的输出来看,是哪些文件: [email protected]/#svmon -S Vsid Esid Type Description PSize Inuse Pin Pgsp

Linux内存描述之高端内存--Linux内存管理(五)

1. 内核空间和用户空间 过去,CPU的地址总线只有32位, 32的地址总线无论是从逻辑上还是从物理上都只能描述4G的地址空间(232=4Gbit),在物理上理论上最多拥有4G内存(除了IO地址空间,实际内存容量小于4G),逻辑空间也只能描述4G的线性地址空间. 为了合理的利用逻辑4G空间,Linux采用了3:1的策略,即内核占用1G的线性地址空间,用户占用3G的线性地址空间.所以用户进程的地址范围从0~3G,内核地址范围从3G~4G,也就是说,内核空间只有1G的逻辑线性地址空间. 把内核空间和

内核中内存分配--关于高端内存

Linux把物理内存划分为了三个管理区, 分别为0-16MB的ZONE_DMA, 16-896MB的ZONE_NORMAL和高于896MB的ZONE_HIGHMEM也就是高端内存. 至于为什么这么划分, ZONE_DMA好理解, 因为ISA总线只能对前16MB进行DMA寻址, 这块要分出来不能乱用. 而ZONE_NORMAL和ZONE_HIGHMEM为什么从896MB区分呢? 这还得从物理地址和虚拟地址说起. 默认情况下, 内核空间是指3GB-4GB的虚拟地址, 用户空间则是0-3GB. 内核进

内存 占用过高

故障特点: 服务项目停止,访问不了 发现问题登录上服务器,登录过程中很慢. 登录上df -Th 查看磁盘空间发现是磁盘满了,du -sh --exclude /proc /* |sort -h 看到是 /var/ 日志文件的过多引起的磁盘占用过多 清理磁盘,重新启动项目. 过了会儿 开发过来说项目没有启动看看是怎么回事, 启动完成是可以的 只能上去查找原因 登录时发现登录不上,等了好长时间才登录上去 因为根磁盘满的情况下是没有这么严重的,重启后再登录出现的问题 所以上来后 先 ps aux|gr

rabbitmq binary/other_system内存占用很高

最近有台服务器的MQ应用占用内存比较偏高,如下: 但是看控制台本身内存中消息积压并不多, 查看rabbtmqctl发现,binary data和other data占据了绝大部分的内存,如下: {memory, [{total,124441400}, {connection_readers,5548680}, {connection_writers,605560}, {connection_channels,2798608}, {connection_other,7775480}, {queue

linux内存占用过高原因

今天服务器装了个lnmp环境,看了下那个探针, 发现内存占用97%,瞬间吓尿了. google了半天才发现,一般的解释是Linux系统下有一种思想,内存不用白不用,占用了就不释放,听上去有点道理,但如果我一定要知道应用程序还能有多少内存可用呢? Linux下查看内存还有一个更方便的命令,free: [[email protected] ~]# free -m              total       used       free     shared    buffers     ca