全网唯一标准王
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210680494.7 (22)申请日 2022.06.15 (71)申请人 北京航空航天大 学 地址 100191 北京市海淀区学院路37号 (72)发明人 史晓华 郝浩  (74)专利代理 机构 北京永创新实专利事务所 11121 专利代理师 周长琪 (51)Int.Cl. G06F 9/50(2006.01) (54)发明名称 针对Shadow Memory内存泄漏检测机制的内 存压缩方法 (57)摘要 本发明提供了一种针对Sha dow Memory内存 泄漏检测机制的内存压缩 方法, 属于计算机应用 领域。 本发 明方法针对对象尺 寸较小带来的内存 开销较大的问题, 使用了对象信息模糊表示的机 制——对象融合, 来进行Shadow  Memory内存压 缩, 对最小尺寸为k字节的对象, 若相邻两个对象 的指针相差不超 过2k字节, 则两对象共用一个对 象标识单元; 同时为了消除由此带来的对象漏 报, 提供了两种方案: 输出补 充信息, 随机覆 盖并 结合多次运行泄漏检测的输出结果来解决对象 漏报。 本发 明方法在泄漏检测的准确性和内存负 载之间做出适当的权衡, 使 得泄漏检测模块的内 存消耗降低一半, 也减少了对泄漏对象排查的工 作量, 加快了泄漏检测效率。 权利要求书1页 说明书3页 附图2页 CN 115080235 A 2022.09.20 CN 115080235 A 1.一种针对Shadow  Memory内存泄漏检测机制的内存压缩方法, 其特征在于, 包括如 下 步骤: (一)设应用场景中存储对象的最小尺寸为k字节, 则当相邻两个对象的指针相差不超 过2k字节时, 所述两个对象共用同一个对象标识单 元; (二)使用如下两种方案之一或者组合, 消除对象漏报问题: 方案1, 当出现对象覆盖现象时, 对覆盖涉及的对象双方信息输出日志, 作为泄漏检测 模块输出的补充信息; 方案2, 在不同泄漏检测周期, 泄漏检测模块初始化不同的覆盖策略, 为先来对象优先 或后来对象优先; 采用先来对象优先策略时, 当出现对象覆盖现象时, 将不更新对象标识单 元; 采用后来对象优 先策略时, 当出现对象覆盖现象时, 更新对象标识单元为后来对象的内 容; 将多个不同覆盖策略的泄漏检测周期的泄漏检测模块的输出进行综合, 消除对 象漏报 问题。 2.根据权利要求1所述的方法, 其特征在于, 所述的步骤(二), 采用方案2更新Shadow   Memory的机制如下: 步骤1, 当运行时系统中的插桩代码检测到某个分配点p创建了新对象时, 插桩代码将 分配点信息和该对象的指针ad dr转发给Shado w Memory; 步骤2, Shadow  Memory根据addr检索对象标识单元, 检索位置为addr/R, 其中R为压缩 单元, 再检查该对象标识单元是否已经被其他对象占用, 如果没有被占用, 跳转到步骤4; 否 则, 继续执 行步骤3; 步骤3, 对象标识单元已经被占用, 检测泄漏检测模块初始化的覆盖策略是否为后来对 象优先, 若是, 继续执 行步骤4; 否则, 转 步骤5执行; 步骤4, 向对象标识单 元中写入当前捕获的对象的分配点以及 访问信息; 步骤5, 将当前对象的访问点信息存储到访问点表中, 根据存储在Shadow  Memory中的 hash(p)检索实际访问点信息; hash(p)是分配点p的哈希值。权 利 要 求 书 1/1 页 2 CN 115080235 A 2针对Shadow Memory内存泄漏检测机制的内存压缩方 法 技术领域 [0001]本发明属于计算机领域, 具体是指一种针对Shadow  Memory内存泄漏检测机制的 内存压缩方法。 背景技术 [0002]解释型语言大多依赖运行时环境提供的垃圾回收(Garbage  Collection)机制进 行对象的分配和自动 释放。 在实际开 发中, 常常会因为不合理的代码设计, 而 出现长久不被 访问的“冷”对象长期占据内存的现象, 进 而造成内存空间的浪费— —内存泄漏。 [0003]Shadow Memory(影子内存)是针对内存泄漏问题的一个有效解决方案。 虚拟机在 堆栈之外额外开辟一段内存空间记录对象 的访问、 分配点等信息, 并在创建、 访问、 修改、 删 除对象的逻辑中进行代码插桩, 将访问信息存储到Shadow  Memory中, 再根据设定的时间间 隔扫描并维护其中存储的对象访问信息, 在此过程中生成可能发生泄漏 的对象分配点信 息。 该方案能够有效检测出潜在的发生内存泄漏的对 象, 而且针对不同的运行时系统进行 定制化开发的工作量较小, 具有较强的通用性。 [0004]但是上述方案无法解决高内存负 载问题。 方案中使用对象在内存中的指针表示对 象, 并依赖此指针在Shadow  Memory中检索该对象对应的访问和分配点信息, 如图1所示。 额 外开辟的Shadow  Memory占用的空间与压缩比率(运行时内存空间大小/Shadow  Memory大 小)直接相关, 压缩比率又 受到对象尺寸的 限制。 当对象尺寸较小时, 压缩上限较低, 进而消 耗更大的内存空间存储对 象的访问和分配点信息。 对于某些内存资源紧张的设备而言, 过 高的内存开销是不可接受的。 发明内容 [0005]针对上述对象尺寸较小带来的潜在的内存开销较大的问题, 本发明提出了一种对 象信息模糊表示的机制——对象融合, 实现了一种针对Shadow  Memory内存泄漏检测机制 的内存压缩方法, 在泄漏检测的准确性和内存负载之间做出适当的权衡, 解决上述问题。 [0006]本发明提供的一种针对Shadow  Memory内存泄漏检测机制的内存压缩方法, 实现 手段包括如下: [0007](一)设应用场景中存储对象的最小尺寸为k字节, 则当相邻两个对象的指针相差 不超过2k字节时, 所述两个对象共用同一个对象标识单 元; [0008](二)使用如下两种方案消除对象漏报问题: [0009]方案1, 当出现对象覆盖现象时, 对覆盖涉及的对象双方信息输出日志, 作为泄漏 检测模块输出的补充信息; [0010]方案2, 在不同泄漏检测周期, 泄漏检测模块初始化不同的覆盖策略, 为先来对象 优先或后来对象优先; 采用先来对象优 先策略时, 当出现对象覆盖 现象时, 将不更新对象标 识单元; 采用后来对象优先策略时, 当出现对象覆盖现象时, 更新对象标识单元为后来对象 的内容; 将多个不同覆盖策略的泄漏检测周期的泄漏检测模块的输出进行综合, 消除对 象说 明 书 1/3 页 3 CN 115080235 A 3

.PDF文档 专利 针对Shadow Memory内存泄漏检测机制的内存压缩方法

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