安卓系统上监测Java对象内存泄漏时即时记录对象分配点的方法.pdf
![安卓系统上监测Java对象内存泄漏时即时记录对象分配点的方法.pdf_第1页](https://img.zhuanlichaxun.net/fileroot4/2021-6/2/e5c427d9-3550-46a9-83f5-a1fd617b3621/e5c427d9-3550-46a9-83f5-a1fd617b36211.gif)
![安卓系统上监测Java对象内存泄漏时即时记录对象分配点的方法.pdf_第2页](https://img.zhuanlichaxun.net/fileroot4/2021-6/2/e5c427d9-3550-46a9-83f5-a1fd617b3621/e5c427d9-3550-46a9-83f5-a1fd617b36212.gif)
![安卓系统上监测Java对象内存泄漏时即时记录对象分配点的方法.pdf_第3页](https://img.zhuanlichaxun.net/fileroot4/2021-6/2/e5c427d9-3550-46a9-83f5-a1fd617b3621/e5c427d9-3550-46a9-83f5-a1fd617b36213.gif)
《安卓系统上监测Java对象内存泄漏时即时记录对象分配点的方法.pdf》由会员分享,可在线阅读,更多相关《安卓系统上监测Java对象内存泄漏时即时记录对象分配点的方法.pdf(8页完成版)》请在专利查询网上搜索。
1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 202010818508.8 (22)申请日 2020.08.14 (71)申请人 北京航空航天大学 地址 100191 北京市海淀区学院路37号 (72)发明人 史晓华张显龙 (74)专利代理机构 北京永创新实专利事务所 11121 代理人 祗志洁 (51)Int.Cl. G06F 11/30(2006.01) G06F 9/455(2006.01) (54)发明名称 一种安卓系统上监测Java对象内存泄漏时 即时记录对象分配点的方法 (57)摘要 本发明提供了一种安卓系统上监。
2、测Java对 象内存泄漏时即时记录对象分配点的方法, 属于 计算机技术领域。 本发明基于传统位图的思想, 将对象分配点压缩聚类, 在压缩位图中对Java堆 上的每个对象用一个8bit数据来描述, 第一个 bit用来标识是否被访问过, 后7bit用来记录对 象的分配点颜色; 在监测时, 每间隔N次主GC触发 一次泄漏推断, 根据压缩位图判断对象是不是 “冷” 对象; 当判定某对象泄漏时, 输出与对象分 配点相同颜色的分配点中相同对象类型的分配 点与分配函数。 本发明实现了一种在线的轻量级 泄漏推断机制, 并可提供与内存泄漏相关的分配 点信息; 相较于现有技术, 本发明在运行时负载 上表现更为良好。
3、。 权利要求书1页 说明书4页 附图2页 CN 112100022 A 2020.12.18 CN 112100022 A 1.一种安卓系统上监测Java对象内存泄漏时即时记录对象分配点的方法, 其特征在 于, 包括: (1)在Java堆对象分配时, 记录Java对象的分配点和分配点分配的对象类型, 将Java对 象和分配点绑定存入压缩位图; 所述的压缩位图用于记录Java对象是否被访问, 以及保存 对象分配点颜色, 对一个Java对象用一个8bit数据来描述, 第一个bit用来标识是否被访问 过, 后7bit用来记录对象的分配点颜色; 所述的分配点是指Java对象的分配函数在虚拟机 中的地址。
4、; (2)在安卓系统中设置插桩代码, 用于对每一次对象访问进行标记, 并更新压缩位图中 对应对象的第一个bit; (3)在安卓系统的垃圾回收机制中, 设置插桩代码, 用于每间隔N次主GC触发一次泄漏 推断; N为大于2的正整数; 当触发泄漏推断时, 在安卓系统中遍历Java堆上的每个活对象, 根据压缩位图判断对象是不是 “冷” 对象; GC表示安卓系统中的垃圾回收; (4)当对象判断是 “冷” 对象时, 推断造成泄漏, 设该对象的类型为C, 对应的分配点颜色 为B, 则根据压缩位图, 将其中所有颜色为B的分配点中分配C类型对象的分配点, 以及对应 的分配函数输出。 2.根据权利要求1所述的方法。
5、, 其特征在于, 所述的(1)中, 设Java对象A在分配点P分 配, 则对象A的分配点颜色采用哈希函数来计算得到, 颜色为Hash(P)128; 其中, Hash() 表示哈希函数。 3.根据权利要求1所述的方法, 其特征在于, 所述的(1)中, 所述的压缩位图中按Java堆 中Java对象的存储顺序来存储Java对象的8bit数据。 4.根据权利要求1所述的方法, 其特征在于, 所述的(1)中, 设Java堆的起始地址为H, Java对象A的地址为O, 压缩位图的起始地址为B, 则对象A的8bit数据在压缩位图中的地址 为B+(O-H)/8。 5.根据权利要求1或2所述的方法, 其特征在于。
6、, 所述的方法, 在安卓系统的垃圾回收过 程中, 当Java对象被回收或移动时, 更新维护所述的压缩位图, 当Java对象被移动时, 对应 压缩位图中的8bit数据需要同时移动, 当Java对象被回收时, 从压缩位图中删除对应的 8bit数据。 权利要求书 1/1 页 2 CN 112100022 A 2 一种安卓系统上监测Java对象内存泄漏时即时记录对象分配 点的方法 技术领域 0001 本发明属于计算机技术领域, 具体涉及一种安卓系统上Java对象内存泄漏时即时 记录对象分配点的监测方法。 背景技术 0002 在JAVA虚拟机中, 垃圾回收机制一般采用基于引用计数或者基于可达性分析来回 。
7、收不可到达对象的算法实现。 自动垃圾回收机制在一定程度上减少了程序内存使用不当的 错误, 并且因为有具有统一的内存管理机制, 相比手工分配提升了应用程序内存使用的效 率, 同时借由自动回收机制减少了因为丢失对象指针而造成的内存泄漏的问题。 然而, 自动 垃圾回收机制并不能完全地避免内存泄漏的情况, JAVA对象往往在逻辑上有着有限的生命 周期, 当这些对象所要做的事情完成后, 开发人员希望他们被回收掉。 但是如果有一系列对 象因为程序员疏忽在此时持有了这些 “完成” 工作的对象的引用, 那么在逻辑上期待被收回 的对象不会被回收的。 在这种情况下它会持续占用内存直到所有被持有的引用释放, 这就 。
8、造成了一种隐式的内存泄漏。 当这种情况持续发生时, 应用申请的系统内存会很快被消耗 殆尽甚至发生内存溢出错误。 0003 ART(Android Runtime)虚拟机是Android系统在Linux底层之上构筑的虚拟机, Android中Java程序都运行在ART之中。 同样, 在Android中的JAVA程序也会出现内存泄漏的 情况。 根据对泄漏对象产生原因的分析, 往往把泄漏的对象定义为 “冷” 对象: 经过一段时间 未被使用且未被垃圾回收机制回收的对象。 开发人员一般情况下通过对象的 “冷热” 情况去 判断受管理运行时系统中的内存的泄漏问题。 Android系统往往运行在移动设备之上,。
9、 这样 的设备有着算力相对较低、 带宽相对较小的特点, 而现有的商业级监测工具不能满足所有 场景下的用户监测内存泄漏的需求。 发明内容 0004 本发明针对现有监测工具不能满足所有场景下的用户监测内存泄漏的需求的问 题, 提出了一种安卓系统上监测Java对象内存泄漏时即时记录对象分配点的方法, 采用一 种轻量级的监测机制去判断ART中对象的 “冷热” 情况, 通过监测运行时中对象的活动行为, 在线维护并判断对象的隐式的内存泄漏, 从而找到 “冷” 对象分配点。 对于分配点的说明: 如 对象A运行时在function()中被分配, 本发明可定位到function(), 称function()为对。
10、象 A的分配函数, 分配函数在虚拟机中的地址作为分配点。 0005 本发明提供的安卓系统上监测Java对象内存泄漏时即时记录对象分配点的方法, 包括: 0006 (1)在Java堆对象分配时, 记录Java对象的分配点和分配点分配的对象类型, 将 Java对象和分配点绑定存入压缩位图; 所述的压缩位图用于记录Java对象是否被访问, 以 及保存对象分配点颜色, 对一个Java对象用一个8bit数据来描述, 第一个bit用来标识是否 说明书 1/4 页 3 CN 112100022 A 3 被访问过, 后7bit用来记录对象的分配点颜色; 0007 (2)在安卓系统中设置插桩代码, 用于对每一次。
11、对象访问进行标记, 并更新压缩位 图中对应对象的第一个bit; 0008 (3)在安卓系统的垃圾回收机制中, 设置插桩代码, 用于每间隔N次主GC触发一次 泄漏推断; N为大于2的正整数; 当触发泄漏推断时, 在安卓系统中遍历Java堆上的每个活对 象, 根据压缩位图判断对象是不是 “冷” 对象; GC表示安卓系统中的垃圾回收; 0009 (4)当对象判断是 “冷” 对象时, 推断造成泄漏, 设该对象的类型为C, 对应的分配点 颜色为B, 则根据压缩位图, 将其中所有颜色为B的分配点中分配C类型对象的分配点与分配 函数输出。 0010 所述的压缩位图中按Java堆中Java对象的存储顺序来存储。
12、Java对象的8bit数据。 0011 在安卓系统的垃圾回收过程中, 当Java对象被回收或移动时, 更新维护所述的压 缩位图; 当Java对象被移动时, 对应压缩位图中的8bit数据需要同时移动, 当Java对象被回 收时, 从压缩位图中删除对应的8bit数据。 0012 本发明的优点与积极效果在于: 本发明提供了一种监测Java冷对象时的即时记录 对象分配点的压缩机制, 通过在线分析的方式, 在低运行时负载与少量额外内存开销的情 况下推断出内存泄漏, 并提供相关信息帮助用户分析与内存泄漏相关的源代码。 相较于现 有其他Java对象内存泄漏监测的方案, 本发明在运行时负载上表现更为良好。 附。
13、图说明 0013 图1是本发明监测Java对象内存泄漏时即时记录对象分配点的监测机制示意图; 0014 图2是Java对象的压缩位图的示意图; 0015 图3是本发明进行Java对象内存泄漏监测的流程图。 具体实施方式 0016 下面将结合附图和实施例对本发明作进一步的详细说明。 0017 本发明基于传统位图的思想, 将对象分配点压缩聚类, 提供了一种分配点 “染色” 的思路。 通过牺牲部分信息准确性, 当判定某对象泄漏时, 有概率会输出包括该对象分配点 的一组分配点, 达到了更低的运行时负载的效果。 0018 如图1所示, 本发明实现的安卓系统上监测Java对象内存泄漏时即时记录对象分 配点。
14、的方法, 是一种轻量级的监测机制, 通过对Android系统中原有的垃圾回收机制进行改 进, 新增对象监测模块, 查找 “冷” 对象来进行内存泄漏推断, 图1中左侧虚框中为原有系统 部分, 右侧虚框为新增对象监测模块。 本发明实施例结合Android10.0系统来进行说明。 0019 图1中表示 “Android系统中原有的垃圾回收机制” 。 在Android10.0系统中前台 垃圾回收(简称GC)根据情况不同, 主要分为主GC和部分GC。 安卓系统在所有GC过程中维护 相关对象信息, 详细维护内容在中描述, 在主GC中进行推断触发, 详细触发机制在中 描述。 0020 图1中表示 “间隔触发。
15、机制” 。 本发明在原有安卓垃圾回收机制中间插桩代码, 每 间隔若干次主GC触发一次 “泄漏推断” , 测试间隔可由用户配置。 根据 “冷” 对象定义: 经过一 段时间未被使用且未被垃圾回收机制回收的对象, 则本发明实施例中, 将认定间隔若干次 说明书 2/4 页 4 CN 112100022 A 4 主GC未被使用的活对象为怀疑泄漏的对象。 0021 图1中表示 “触发推断机制” , 经过每间隔若干次主GC触发一次 “泄漏推断” , 在 系统中开始遍历堆上的活对象。 根据过程, 判断此次遍历对象的属性。 得到的属性可能有 两种: (1)在隔若干次主GC中被访问, 则说明该对象不是 “冷” 对。
16、象。 (2)在隔若干次主GC中未 被访问, 则说明该对象是 “冷” 对象。 系统将根据得到的信息, 进行整理输出, 触发机制, 比较对应 “颜色” 的分配点分配的对象类型和泄漏对象的类型, 整理输出泄漏对象点可能的 对象分配函数、 对象大小、 对象类型等有效信息。“颜色” 在中进行描述。 0022 图1中表示 “记录观察对象” , 可以根据用户配置, 选择需要记录的对象大小阈值 或对象种类, 在记录过程中通过在Java堆对象分配的桩代码中获得对象分配点, 并通过在 编译过程中进行处理得到对象的分配函数, 帮助后续在进行 “冷” 推断时, 输出对象对应的 分配函数。 将分配点与对象绑定后存入中进。
17、行动态维护与实时监测。 如: 对象A在分配点P 点进行分配, P指A的分配函数在虚拟机中的地址。 根据中的定义每个对象地址对应8bit, 通过hash函数H, 定义H(P)128为对象A的分配点P的 “颜色” , 将该 “颜色” 写入A对应的8bit 中的后7bit, 帮助在后续推断中判断分配点。 同时需要维护维护各 “颜色” 的分配点分配的 对象类型等信息方便后续信息整理。 整个过程 “记录观察对象” 记录了推断监测对象分配 点所需的各种信息, 并将 “颜色” 信息写入压缩位图。 0023 图1中表示 “对象访问标记” 。 根据系统功能需求, 该机制需要对每一次对象访问 进行标记。 设计中选。
18、择修改Android中的代码生成器, 在执行诸如GetField, PutField, Invoke等指令时插桩代码, 进行对应压缩位图Access Bitmap的标记, 以此标记做完判断 对象是否在若干次主GC之中进行了访问。 对象访问标记主要是修改压缩位图中对应对象的 第一个bit的数值。 0024 图1中表示 “维护对象移动和回收” 。 在GC的过程中, 对象有可能被回收或移动, 如果发生移动需要维护 “压缩位图” , 如对象A从Address1移动到Address2, 则位图上对应 的8bit需要同时进行移动, 以达到跟踪目标对象的目的。 在对象回收时, Android10.0默认 情。
19、况下按 “区块” 回收, 本发明选择删除相应的监测对象的8bit数据, 避免误报与空间浪费。 0025 图1中表示 “压缩位图” , 也就是标记位图, 本发明在安卓系统采用压缩位图来保 存Java对象访问信息与分配点 “颜色” 。 如图2所示, 标记位图Access Bitmap用来标记Java 对象是否被访问, 以及保存对象分配点颜色信息。 例如, 某个对象A, 由分配点P分配, 对象A 的地址为O, 堆的起始地址为H, 压缩位图的起始地址为B, 则压缩位图中用8bit数据来描述 对象A是否被访问与分配点颜色, 对象A的8bit的地址为: B+(O-H)/8。 8bit数据中的第一个 bit。
20、用来标识活跃信息, 即是否被访问过, 当该位值为0时, 表示未被访问, 当值为1时, 表示 曾经被访问, 后7bit用来标识对象A的分配点颜色信息, 通过哈希函数来计算颜色信息, 设 置对应A的分配点的颜色为Hash(P)128。 0026 图1中表示在 “泄漏对象推断” , 由触发推断机制, 根据压缩位图进行泄漏对象 推断。 在本发明的安卓系统中, 整个监测机制由触发。 监测的过程主要由体现。 在这个 过程中扫描堆上全部监测的活对象, 根据 “压缩位图” 的对象的第一位标记来判断对象是 否泄漏, 如: 对象A, 对应8bit中第一位为0表示在若干时间内未被访问推断怀疑造成泄漏, 触发机制进行。
21、相关输出, 对应8bit中第一位为1表示曾经被访问。 0027 图1中表示 “进行相关输出” 。 在得到的泄漏对象, 根据对象类型与该对象颜色 说明书 3/4 页 5 CN 112100022 A 5 所保存的所有分配点进行比对输出。 如: 对象A泄漏, 颜色为B, 类型为C, 则整理输出所有颜 色为B的分配点中分配C类型对象的分配点。 最终将整理的相关信息输出到文本, 供用户选 择上传至服务器或存档保留。 0028 本发明的机制的主要运作过程如图3所示: 垃圾回收开始之后, 在GC移动和回收对 象时维护对象相关信息, 之后判断本次GC是否需要泄漏监测; 如需要监测, 扫描存活对象, 根据标记位图判断对象 “冷热” ; 最后将 “冷” 对象相关信息保存到本地。 对于某个对象A, 从 标记位图中查找A对应的值, 若对应位置为0, 则代表是冷对象, 若对应位置为1, 则代表是热 对象, 继续对下一个对象A 进行判断。 说明书 4/4 页 6 CN 112100022 A 6 图1 图2 说明书附图 1/2 页 7 CN 112100022 A 7 图3 说明书附图 2/2 页 8 CN 112100022 A 8 。
- 内容关键字: 系统 监测 Java 对象 内存 泄漏 即时 记录 分配 方法
台灯.pdf
用于针织纱筒的寻纱吸纱机构.pdf
流延机色母添加装置.pdf
隔砖装置.pdf
拼装式棚盖和棚顶.pdf
在线留孔推砖装置.pdf
染色机印染染料连续定量化料配送系统.pdf
往复式珠片排片机.pdf
应用于波码分注井的轮注配水器.pdf
建筑工程用筛沙装置.pdf
低压维持电磁阀.pdf
应用于化工生产的液态物料计量检测装置.pdf
车辆尾部自行车携带挂架.pdf
连续化液氨中和水处理系统.pdf
网络通信设备散热装置.pdf
混凝土原料输送装置.pdf
透过玻璃对涂层的热辐射进行测量的装置.pdf
电缆切割装置.pdf
两步法绿色糠醛生产装置.pdf
地坪研磨机齿轮箱体.pdf
桥梁巡检无人船浮筒组件.pdf
具有充电温度监测功能的车辆充电桩.pdf
建筑结构减震装置.pdf
道路桥梁养护检测设备运输用防护机构.pdf
义齿加工用检测装置.pdf
具有防倾倒结构的面积测量仪.pdf
薄壁形钛合金铸件补焊防变形装置.pdf
直流脉冲氩弧焊机.pdf
车身部件质量模型的生成式数据增强方法、系统及设备.pdf
消融针快速拆装夹持结构及其穿刺装置.pdf
减小通态损耗的零开关损耗非隔离逆变电路及调制方法.pdf
深海钢管桩脱离回收装置及施工方法.pdf
一种一孔两用的隧洞排水孔结构.pdf
钢管桩围堰结构.pdf
一种生态砌块.pdf
一种铁路桥梁用泄水管.pdf
一种卷帘门的抗风装置.pdf
一种掺有非预应力钢筋的管桩钢筋笼.pdf
大型沉管隧道管段基础.pdf
汽车手套箱开启装置.pdf
城市道路上空花园式电动跃层停车商务楼.pdf
蒸压加气砌块砌窗结构.pdf
一种升降式旋转室外消火栓.pdf
框架结构T型连接柱.pdf
防静电地板吸板器.pdf
一种建筑用箱体或井口预留孔洞活动模具.pdf
速成拉建房屋.pdf
预制桥面板精轧螺纹钢筋弧形连接构造.pdf
一种内固定式伸缩门滑行导轨及伸缩门.pdf
多用途封井器.pdf
一种新型圆弧建筑模板紧固件.pdf
相关文档
更多![运动目标检测方法、装置、存储介质及终端设备.pdf](/Images/s.gif)
![桥梁警示用限高装置.pdf](/Images/s.gif)
![窄开口的汽车柱状光学透镜.pdf](/Images/s.gif)
![用于推出式光电设备的定位精度测量装置及测量方法.pdf](/Images/s.gif)
![物联网终端的远程升级方法、物联网主站及存储介质.pdf](/Images/s.gif)
![基于六元锥矢量阵的水声目标降维匹配声场定位方法.pdf](/Images/s.gif)
![冷挤压强化孔结构的疲劳寿命预测方法.pdf](/Images/s.gif)
![具有Pd-Cu网/锂金属复合材料电极的锂电池的制备方法.pdf](/Images/s.gif)
![可送料式桥梁排水管安装吊篮.pdf](/Images/s.gif)
![V2G充电桩.pdf](/Images/s.gif)
![基于近红外光谱的玉米种子鉴别方法.pdf](/Images/s.gif)
![用于液晶面板加工的尺寸检测装置及其工作方法.pdf](/Images/s.gif)
![脱细胞基质水凝胶及其制备方法和应用.pdf](/Images/s.gif)
![管壁缺陷确定方法.pdf](/Images/s.gif)
![防止车辆刹车及转向失控机构.pdf](/Images/s.gif)
![机器人排队方法、机器人和计算机可读存储介质.pdf](/Images/s.gif)
![性能测试方法及装置.pdf](/Images/s.gif)
![基于多轴传感器的脚手架倾斜监控装置.pdf](/Images/s.gif)
![液晶显示装置及其源极驱动方法.pdf](/Images/s.gif)
![极耳结构、极耳结构的应用、制备方法及制备装置.pdf](/Images/s.gif)