当前位置: 首页 > news >正文

公司网站建设的优势求一个免费的企业邮箱

公司网站建设的优势,求一个免费的企业邮箱,集团网站建设方案,南京网站开发荐南京乐识*****阅读完此文#xff0c;大概需要3分钟******关于Memory leak#xff08;内存泄漏#xff09;的问题#xff0c;如果是面试被问这个问题以及此类问题#xff0c;主要涉及下面3个方面#xff1a;内存泄漏的常见场景有哪些#xff0c;列举几个常见的例子#xff1f;开…*****阅读完此文大概需要3分钟******关于Memory leak内存泄漏的问题如果是面试被问这个问题以及此类问题主要涉及下面3个方面内存泄漏的常见场景有哪些列举几个常见的例子开发中实际发生了内存泄漏该如何定位与解决开发中该如何避免内存泄漏有哪些方法下面我们就分别从这个3个方面进行总结。Memory Leak的常见场景1. 循环引用ARC机制下循环引用是导致内存泄漏的一个主要原因它也分为很多具体的场景例如两个类对象之间的循环引用Block中的循环引用问题包括GCD或其他系统Block等Timer的循环引用问题 delegate带来的循环引用问题属性观察、监听类等场景2. 对象生命周期管理(持有)不当这种需要结合实际业务问题来分析例如Static字段或其他全局对象导致的持有不当引起内存泄漏。集合类等的引用关系不当或未及时释放等。3. 对象的未及时释放有些对象需要手动释放内存例如 Core Foundation(CF)和 Core Graphics(CG)框架的对象。如果不及时释放这些对象就可能导致内存泄漏。4. 资源的未及时关闭或释放资源类未及时关闭或未释放也是一种常见的内存泄漏场景例如文件的打开后(FileHandle)未及时Close。网络请求的URLSession对象未及时释放。Memory Leak该如何定位与解决其实找到问题点后基本很好解决例如循环引用就想办法利用weak来打破循环对象的生命周期不当可以更换持有者或者需要重新设计代码CF或CG类的对象需要手动释放资源类的占用也需要及时手动释放等等。但是问题主要难在怎么找到泄漏代码。1. 手动调试法当我们意识到发生泄漏时一般都会有明显的表象例如VC Pop失败等。如果我们对代码很熟悉一般情况下我相信很多人会直接找代码进行手动调试。常见手段有重写dealloc或者deinit方法我们可以尝试在一些类的dealloc或者deinit方法中断点或者加log没有预期的执行则为嫌疑泄漏点。手动检查引用计数手动检查对象的引用计数可以帮助我们找到是否存在引用计数错误导致的内存泄漏。我们可以使用 Objective-C 或 Swift 中的 retainCount 属性来手动检查对象的引用计数。写一些辅助测试代码如果内存泄漏点比较隐晦可以通过写一些测试用例的代码来复现例如连续循环9999次把问题扩大引发内存耗尽崩溃的Crash再根据堆栈定位代码这也是定位概率性Crash的常用手段逐一排查法逐一注释掉问题的代码直到发现问题点所在。开发中排查Crash问题也常用类似手段虽然看似很Low但是十分有效。2. 工具类定位这种有很多可以借助例如Instruments工具箱其中的Leaks工具或者内存调试器Analyze来分析Xcode Memory Debugger中的Memory Graph可以帮助我们分析对象的内存引用关系并找到循环引用和内存泄漏。第三方的检测工具例如MLeaksFinder、FBRetainCycleDetector、LeakDetector、HeapInspector等。静态分析工具例如 Clang 静态分析器、Infer、OCLint、SwiftLint等工具。这些工具一般是附带性发现一些内存泄漏的代码可以给我们一些提示或者警告。如何避免Memory Leak实际开发中不大可能写段代码就跑一下Instruments这些工具就连一些MLeaksFinder这些经常误报的工具都嫌烦会直接关闭。那我们该如何避免尽可能降低问题代码的产生第一要有一些风险意识。例如Timer既然选择它就该知道它的最大的风险就是容易导致内存问题。将一些容易导致泄漏的场景烂熟于心。还例如谨慎使用全局变量或者单例等。第二要养成一些习惯。例如写完一段代码或者接收一段代码在dealloc或deinit中断点保证对象可预期释放。还例如Swift中尽可能采取值类型而非引用类型开发完自测时把一些内存检测工具都打开作为辅助检测第三做好系统设计。有些业务场景很容易产生泄漏例如曾经我参与过一个直播业务的开发房间VC与房间的唯一数据模型对象dataModel之间很容易相互引用由于dataModel承载了很多业务基础信息业务对这个dataModel都极其依赖这个对象也因此被传的很深很广一个不小心就发生循环引用。针对这种开始的设计不当后面只能打补丁修复维护一个dataModel弱引用集合每次用时根据id去查询并获得对应房间的dataModel对象业务之间只需维护一个id的String对象或者存储最少信息的字典对象即可。类似的业务场景还有商品详情页等。第四定时给工程代码做“体检”一般工程量较大时这个十分有必要跑一下Instruments或Memory Graph几乎每次都有收获。欢迎关注公众号ios_hunter不要错过更多优质文章更新。
http://www.hkea.cn/news/14394976/

相关文章:

  • 专业网站设计建设服务福州市住房和城乡建设局网站
  • 福州做网站互联网公司有哪些常州建设公司网站
  • 网站开发需要经历哪些主要阶段一个人能建网站吗
  • 调查问卷网站建设湖南好搜网站建设
  • 郑州网站建设代运营青岛专业网站建设哪家好
  • 音乐自助建站百度下载并安装
  • dw做网站常用标签做什么网站赚钱最快
  • 如何做网站编辑 ?]技术口碑好的常州做网站
  • 如何打开国外网站企业建网站有这个必要吗
  • 可以玩游戏的网站长春网站优化页面
  • 网站负责人核验照片宝塔建站网址
  • 苏州网站建设制作服务商手机百度2022年新版本下载
  • php语言 网站建设网站开发的后台开发工具
  • 松江新城建设发展有限公司网站赣州商友网络科技有限公司
  • 东莞专业建网站wordpress theme options
  • 大麦网网站内似网站开发陕西省住房城乡建设厅网站
  • 某小型网站开发公司创业策划公司企业文化内容
  • 广州 网站优化取消wordpress的最近文档
  • 那个网站可以找人做设计师做网站的协议
  • 个人网站建设方案书使用几号纸公司网站怎么建站
  • 沈阳市营商环境建设监督局网站net网站开发JD
  • 品牌网站建设费dreamware怎么做网站
  • 深圳房地产网站开发将wordpress 搭建成一个公众网页
  • 华企在线网站建设seo服务方案
  • 免费空间怎么搞网站上海市建设厅网站
  • 重庆网站开发服务最低成本做企业网站
  • 关于网站建设的问卷分析台州cms模板建站
  • 查询网站所有关键词排名邹平做网站的公司有哪些
  • 初期网站价值WordPress自动采集翻译插件
  • 江苏建设招标信息网站做电影网站违法吗