(19)国家知识产权局 (12)发明 专利 (10)授权公告 号 (45)授权公告日 (21)申请 号 202211010133.8 (22)申请日 2022.08.23 (65)同一申请的已公布的文献号 申请公布号 CN 115080252 A (43)申请公布日 2022.09.20 (73)专利权人 智者四海 (北京) 技 术有限公司 地址 100000 北京市海淀区学院路甲5号1 幢三层1#厂房3 -011 (72)发明人 李宇航 李大和 李治霖 高攀  李大海  (74)专利代理 机构 北京超凡宏宇专利代理事务 所(特殊普通 合伙) 11463 专利代理师 戚海洋 (51)Int.Cl. G06F 9/50(2006.01)G06F 11/30(2006.01) G06F 12/14(2006.01) (56)对比文件 CN 101110044 A,2008.01.23 CN 110413521 A,2019.1 1.05 CN 1885275 A,20 06.12.27 CN 112631893 A,2021.04.09 JP 2002055851 A,20 02.02.20 贾荣来等.高性能网络协议还原平台的研 究. 《计算机 应用与软件》 .2013,(第01期), 审查员 姚子琪 (54)发明名称 iOS平台中基于无锁的非法内存访问检测方 法和装置 (57)摘要 本发明提供一种iOS平台中基于无锁的非法 内存访问检测方法和装置, 其中方法包括: 将待 释放内存对象在同一位置转换为内存监听对象; 利用均匀随机算法确定内存监听对象在预设内 存池中的索引位置, 并将内存监听对象的内存地 址存储至预设内存池中的索引位置处; 其中, 预 设内存池用于对其中存储的内存地址对应的内 存监听对象进行管理, 自动回收通过非法内存访 问检测的内存监听对象占用的内存; 监听内存监 听对象, 若捕获到针对内存监听对象的调用事 件, 则基于调用事件确定非法内存访问的诊断结 果描述信息。 本发明可以实现准确的非法内存访 问问题的检测和诊断, 且可以广泛应用到线上阶 段的真实用户, 其实用性和适用范围得到了有效 提升。 权利要求书2页 说明书11页 附图4页 CN 115080252 B 2022.11.08 CN 115080252 B 1.一种iOS平台 中基于无锁的非法内存访问检测方法, 其特 征在于, 包括: 确定待释放内存对象, 并将所述待释放内存对象在同一位置转换为内存监听对象; 其 中, 所述内存监听对象中仅包 含所述待释放内存 对象的类型信息和释放 堆栈信息; 利用均匀随机算法确定所述内存监 听对象在预设内存池中的索引位置, 并将所述内存 监听对象的内存地址存储至所述预设内存池中的索引位置处; 其中, 所述预设内存池用于 对其中存储的内存地址对应的内存监听对象进行管理, 自动回收通过非法内存访问检测的 内存监听对象占用的内存; 监听所述内存监听对象, 若捕获到针对所述内存监听对象的调用事件, 则基于所述调 用事件确定非法内存访问的诊断结果描述信息; 所述利用均匀随机算法确定所述内存监 听对象在预设内存池中的索引位置, 并将所述 内存监听对象的内存地址存 储至所述预设内存 池中的索引位置处, 具体包括: 获取所述待释放内存对象的释放线程的描述信 息, 并从所述释放线程的描述信 息中获 取所述释放线程的线程 号; 将所述释放线程的线程号作为随机因子, 利用均匀随机算法确定所述内存监 听对象在 预设内存池中的索引位置, 并将所述内存监听对象的内存地址存储至所述预设内存池中的 索引位置处。 2.根据权利要求1所述的iOS平台中基于无锁 的非法内存访 问检测方法, 其特征在于, 所述将所述内存监听对象的内存地址存 储至所述预设内存 池中的索引位置处, 具体包括: 若所述预设内存池中的所述索引位置处已存储有另一历史内存监 听对象的内存地址, 则基于所述另一历史内存监听对象的内存地址, 释放所述另一历史内存监听对象占用的内 存, 以自动回收通过非法内存访问检测的内存监听对象占用的内存; 待所述另一历史内存监 听对象占用的内存被回收后, 将所述内存监 听对象的内存地址 存储至所述预设内存 池中的索引位置处。 3.根据权利要求1所述的iOS平台中基于无锁 的非法内存访 问检测方法, 其特征在于, 所述将所述待释放内存 对象在同一 位置转换为内存监听对象, 具体包括: 基于Runtime机制, 对所述待释放内存对象进行方法交换, 以自定义生命周期函数替换 所述待释放内存 对象中的生命周期函数; 基于所述自定义生命周期函数获取所述待释放内存对象的类型信息并抓取所述待释 放内存对象的释放线程的释放 堆栈信息; 基于所述待释放内存对象中的析构函数执行所述待释放内存对象的内存释放过程后, 在所述待释放内存对象的内存地址处构建无实现方法的内存监听对象, 并将所述待释放内 存对象的类型信息以及所述释放线程的释放 堆栈信息存 储到所述内存监听对象中。 4.根据权利要求3所述的iOS平台中基于无锁 的非法内存访 问检测方法, 其特征在于, 所述监听所述内存监听对 象, 若捕获到针对所述内存监听对 象的调用事件, 则基于所述调 用事件确定非法内存访问的诊断结果描述信息, 具体包括: 基于消息转发机制, 在消息转发的最后 一个常规前向传递阶段拦截针对所述内存监 听 对象的调用事 件; 基于所述调用事 件确定所述内存监听对象的外 部调用者以及具体调用信息; 基于所述内存监 听对象的外部调用者以及具体调用信 息, 以及所述内存监 听对象中包权 利 要 求 书 1/2 页 2 CN 115080252 B 2含的所述待释放内存对象的类型信息和释放堆栈信息, 确定所述 非法内存访问的诊断结果 描述信息 。 5.根据权利要求4所述的iOS平台中基于无锁 的非法内存访 问检测方法, 其特征在于, 所述非法内存访问的诊断结果描述信息中包括产生非法内存访问的被访问对象类型、 所述 外部调用者、 所述被访问对 象被调用的方法, 以及基于所述释放堆栈信息追溯得到的产生 非法内存访问的原因。 6.一种iOS平台 中基于无锁的非法内存访问检测装置, 其特 征在于, 包括: 内存监听对象转换单元, 用于确定待释放内存对象, 并将所述待释放内存对象在同一 位置转换为内存监听对 象; 其中, 所述内存监听对 象中仅包含所述待释放内存对 象的类型 信息和释放 堆栈信息; 内存监听对象管理单元, 用于利用均匀随机算法确定所述内存监 听对象在预设内存池 中的索引位置, 并将所述内存监听对象的内存地址存储至所述预设内存池中的索引位置 处; 其中, 所述预设内存池用于对其中存储的内存地址对应的内存监听对象进 行管理, 自动 回收通过非法内存访问检测的内存监听对象占用的内存; 内存监听对象监听单元, 用于监听所述内存监听对象, 若捕获到针对所述内存监听对 象的调用事 件, 则基于所述调用事 件确定非法内存访问的诊断结果描述信息; 所述利用均匀随机算法确定所述内存监 听对象在预设内存池中的索引位置, 并将所述 内存监听对象的内存地址存 储至所述预设内存 池中的索引位置处, 具体包括: 获取所述待释放内存对象的释放线程的描述信 息, 并从所述释放线程的描述信 息中获 取所述释放线程的线程 号; 将所述释放线程的线程号作为随机因子, 利用均匀随机算法确定所述内存监 听对象在 预设内存池中的索引位置, 并将所述内存监听对象的内存地址存储至所述预设内存池中的 索引位置处。 7.一种电子设备, 包括存储器、 处理器及存储在所述存储器上并可在所述处理器上运 行的计算机程序, 其特征在于, 所述处理器执行所述程序时实现如权利要求1至5任一项所 述iOS平台中基于无锁的非法内存访问检测方法。 8.一种非暂态计算机可读存储介质, 其上存储有计算机程序, 其特征在于, 所述计算机 程序被处理器执行时实现如权利要求 1至5任一项 所述iOS平台中基于无锁的非法内存访问 检测方法。权 利 要 求 书 2/2 页 3 CN 115080252 B 3

.PDF文档 专利 iOS平台中基于无锁的非法内存访问检测方法和装置

文档预览
中文文档 18 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共18页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 iOS平台中基于无锁的非法内存访问检测方法和装置 第 1 页 专利 iOS平台中基于无锁的非法内存访问检测方法和装置 第 2 页 专利 iOS平台中基于无锁的非法内存访问检测方法和装置 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 13:06:56上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。