<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="wordpress主题和博客SEO优化技巧" id="card1">
<p> 游客</p><p>
标题:wordpress主题和博客SEO优化技巧<br/>
正文:<br/>
连云港网络公司资讯 内存泄露问题是每个app都必须关注的问题，关系到线上的稳定性和性能。内存泄露会导致：由于内存资源不足发生难以排查的线上bug由于被泄露对象的存在导致的一些业务bug，比如泄露的对象仍在接受全局通知性能问题，导致用户使用app时越来越卡内存泄露发现分成静态扫描和运行时检测，本文主要讲运行时检测。静态扫描静态扫描的工具：xcode analyzerOCLintInfer运行时动态检测由于静态扫描不能发现所有的内存泄露问题，所以运动时检测是必不可少的。AllocationXcode的Allocation可以通过比较不同时间段的对象，分析出是否发生了内存泄露。但是前提是每个页面的命名要符合规范，比如宝贝详情页的所有对象都是应用前缀+宝贝详情页面前缀+具体对象名，这样才退出页面的时候才能知道相应的对象是否被释放了，因为stack最底部的页面的对象常驻在内存中。Allocation通过和Monkey配合，在回归测试的时候，自动运行并通过计算内存占用率可以判断出新的开发版本是否发生了内存泄露，但是无法知道具体是哪个对象没有释放，只能是全局的判断。MLLeaksFinder非常实用的内存泄露检查工具，主要原理是UINavigationController在pop页面的时候，可以预测出被pop的页面将被释放，所以在一段时间后（3s）对这个对象进行断言判断，如果没有被释放的话程序就会中断，还可以扫描view hierarchy，或者自定义扫描需要的对象。相比Allocation，最大的好处就是及时发现正在开发的页面是否发生了内存泄露，及时排查，而不是在回归测试的时候才发现如果应用中的每个页面都有相应配置的URL scheme的话，那么把所有页面的url写在配置文件中，在回归测试的时候，代码里自动push每个url的页面，可以做到完整地回归所有页面，又免去了Allocation手动点击各个页面的繁琐。如果嫌MLLeaksFinder代码太多，可以自己实现一个精简版的，原理比较简单，代码写起来很少。如何排查上述的各种方法发现了内存泄露后，排查并解决才是最关键的一步。根据泄露的对象，重点排查block和两个以上对象循环引用的情况。如果是ViewController发生内存泄露，重点查看ViewController里面的block是否忘记声明weak了，因为Vie<br/><a href="http://www.sitall.net/blog/wap.asp?mode=WAP&amp;act=View&amp;id=450&amp;Page=1">[&lt;&lt;]</a><a href="http://www.sitall.net/blog/wap.asp?mode=WAP&amp;act=View&amp;id=450&amp;Page=1">[[1]]</a><a href="http://www.sitall.net/blog/wap.asp?mode=WAP&amp;act=View&amp;id=450&amp;Page=2">[2]</a><a href="http://www.sitall.net/blog/wap.asp?mode=WAP&amp;act=View&amp;id=450&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=450">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=450">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://www.sitall.net/blog/wap.asp">首页</a>
</p>
</card>
</wml>