[发明专利]一种STW检测方法、装置及设备有效
申请号: | 201710128832.5 | 申请日: | 2017-03-06 |
公开(公告)号: | CN106951306B | 公开(公告)日: | 2020-01-03 |
发明(设计)人: | 贾宏超;张庚昕 | 申请(专利权)人: | 东软集团股份有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F9/50 |
代理公司: | 11227 北京集佳知识产权代理有限公司 | 代理人: | 王宝筠 |
地址: | 110179 辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 stw 检测 方法 装置 设备 | ||
本申请公开了一种STW检测方法、装置及设备,方法包括:获取第一对象与第二对象各自被创建时的指针地址之间的初始地址差值,其中,所述第一对象与所述第二对象分别为预先创建的强引用对象,且所述第一对象与所述第二对象各自的指针地址之间还预先创建有至少一个第三对象,所述第三对象为弱引用对象;获取所述第一对象及所述第二对象各自的当前指针地址;基于所述第一对象与所述第二对象各自的当前指针地址,获取所述第一对象与所述第二对象之间的当前地址差值;将所述初始地址差值与所述当前地址差值进行比对,得到比对结果;在所述比对结果满足预设的地址距离变化条件时,生成所述JVM中可能出现STW的检测结果。
技术领域
本申请涉及虚拟机技术领域,特别涉及一种STW检测方法、装置及设备。
背景技术
Java相比于其它语言的一个优势在于:对java进行对象管理时不需要显示被管理的对象的内容,而是由Java虚拟机(JVM)自动地进行对象的内存分配和回收。Java中的内存回收原理为:如果对象没有被引用,则该对象的内存可以被回收。
在内存回收中,JVM在不同场景下采用不同的回收方式进行内存回收。例如常规回收方式中仅仅释放待回收的内存空间,而在内存碎片较多时,采用压实回收的方式,即首先释放待回收的内存空间,还需要将内存中剩余的数据或对象进行重新排列,以便消除内存碎片。
而在JVW进行压实回收时,可能会发生stop the world即STW的现象。如果JVW在进行压实回收的过程中出现STW,那么JVM会将所有的用户线程挂起,此时JVM中的用户程序被完全停止,直到STW结束之后才会恢复响应。因此,在STW发生时,JVW的用户程序无法响应外界请求,导致JVM所属的集群或应用无法正常运行,因此,需要对STW的出现进行及时检测,以通知到外界进行相应地操作,避免发生包含JVW的应用或集群无法正常运行的情况。
发明内容
有鉴于此,本申请的目的在于提供一种STW检测方法、装置及设备,用以解决现有技术中无法及时检测STW的技术问题。
本申请提供了一种STW检测方法,包括:
获取第一对象与第二对象各自被创建时的指针地址之间的初始地址差值,其中,所述第一对象与所述第二对象分别为预先创建的强引用对象,且所述第一对象与所述第二对象各自的指针地址之间还预先创建有至少一个第三对象,所述第三对象为弱引用对象;
获取所述第一对象及所述第二对象各自的当前指针地址;
基于所述第一对象与所述第二对象各自的当前指针地址,获取所述第一对象与所述第二对象之间的当前地址差值;
将所述初始地址差值与所述当前地址差值进行比对,得到比对结果;
在所述比对结果满足预设的地址距离变化条件时,生成所述JVM中可能出现STW的检测结果。
上述方法,优选的,所述地址距离变化条件为:所述第一对象与所述第二对象之间的地址距离发生变化;
所述比对结果满足预设的地址距离变化条件,包括:
所述比对结果表明所述第一对象与所述第二对象的初始地址差值与当前地址差值比对不一致。
上述方法,优选的,所述获取所述第一对象及所述第二对象各自的当前指针地址,包括:
利用JNI方法,获取所述第一对象及所述第二对象各自的当前指针地址。
上述方法,优选的,所述基于所述第一对象与所述第二对象各自的当前指针地址,获得所述第一对象与所述第二对象之间的当前地址差值,包括:
将所述第二对象的当前指针地址的量值减去所述第一对象的当前指针地址的量值,得到量值减法结果;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东软集团股份有限公司,未经东软集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710128832.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:汽车用一种强制干燥器排气装置
- 下一篇:一种吸雾板