The invention is called \an instant detection method for memory leak of iOS application program\. After the introduction and use of this tool and method, memory leaks can be automatically detected and warned in the process of daily development and debugging business logic. Developers do not need to open tools such as instrumentation or run additional processes to find memory leaks. Moreover, because developers can discover memory leaks by developing business logic after modifying code, developers can quickly realize where the code is written. This timely discovery of memory leaks greatly reduces the cost of repairing memory.
【技术实现步骤摘要】
一种关于iOS应用程序内存泄漏的即时检测方法
本专利技术涉及涉及信息安全领域。
技术介绍
目前,当前应用的内存泄漏检测主要使用的工具是instrument。通过其中的Leaks/Allocatons来进行监测,但是在实际使用中却存在着各种问题以及不便。Leaks的问题:其中Leakedmemory和Abandoned都属于应该释放而没有释放的内存,都是内存泄漏,而Leaks工具只负责检测Leakedmemory,而不管Abandonedmemory。在MRC时代Leakedmemory很常见,因为很容易忘了调用release,但是ARC时代更常见的内存泄漏是循环引用导致的Abandonedmemory,Leaks工具查不出这类内存泄漏,应用有限。Allocations的问题:对于Abandonedmemory,可以用instrument的Allocations检测出来。检测方法是用Markgeneration方式,当你每次点击Markgeneration时,Allocations会生成当前APP的内存快照,而且Allocations会记录从上回内存快照这个时间段内,新分配的内存信息。需要使用非常简单,具有无侵入性、可以构建泄漏堆栈、有白名单机制、扩展性、其他的一些特殊处理等特性,可以在应用开发中快速找到80%的内存泄漏,符合敏捷开发的理念。
技术实现思路
苹果官方提供的检测方法比较零散,无法有效统一,且每种方法只能检测到相应的问题,使用较复杂,且对于庞大的项目工程而言,运行检测工具耗时较多,大大降低了开发效率。本工具方法可有效检测内存泄漏问题,以便开发人员将更 ...
【技术保护点】
1.一种关于iOS应用程序内存泄漏的即时检测方法 ,其工作步骤如下:步骤1:寻找释放点,通过Method Swizzling系统类的方法添加额外的功能;步骤2:追踪泄漏,建立白名单机制,通过判断class是否在白名单中,来决定是否安全;步骤3:报告泄漏对象,当进入到对应的assertNotDealloc方法,表明该对象极有可能泄漏,通过alert弹出提示框;步骤4:构建堆栈信息,通过监听willReleaseChildren和willReleaseChild方法;递归遍历子对象,然后将父对象class name加上子对象class name,一步步构造出一个view stack;步骤5:查找环引用,FBRetainCycleDetector基于外部传入的object以及查找深度,进行深度优先遍历强引用属性,和动态运行时关联的强引用属性,同时将这些关联对象的地址放入objectSet(set)的集合中,将对象信息计入objectOnPath集合中(set),并且将对象将对象在对象栈stack中存储一份,来查找对应环。
【技术特征摘要】
1.一种关于iOS应用程序内存泄漏的即时检测方法,其工作步骤如下:步骤1:寻找释放点,通过MethodSwizzling系统类的方法添加额外的功能;步骤2:追踪泄漏,建立白名单机制,通过判断class是否在白名单中,来决定是否安全;步骤3:报告泄漏对象,当进入到对应的assertNotDealloc方法,表明该对象极有可能泄漏,通过alert弹出提示框;步骤4:构建堆栈信息,通过监听willReleaseChildren和willReleaseChild...
【专利技术属性】
技术研发人员:傅涛,王力,郑轶,钱勇,
申请(专利权)人:江苏博智软件科技股份有限公司,
类型:发明
国别省市:江苏,32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。