【技术实现步骤摘要】
一种STW检测方法、装置及设备
本申请涉及虚拟机
,特别涉及一种STW检测方法、装置及设备。
技术介绍
Java相比于其它语言的一个优势在于:对java进行对象管理时不需要显示被管理的对象的内容,而是由Java虚拟机(JVM)自动地进行对象的内存分配和回收。Java中的内存回收原理为:如果对象没有被引用,则该对象的内存可以被回收。在内存回收中,JVM在不同场景下采用不同的回收方式进行内存回收。例如常规回收方式中仅仅释放待回收的内存空间,而在内存碎片较多时,采用压实回收的方式,即首先释放待回收的内存空间,还需要将内存中剩余的数据或对象进行重新排列,以便消除内存碎片。而在JVW进行压实回收时,可能会发生stoptheworld即STW的现象。如果JVW在进行压实回收的过程中出现STW,那么JVM会将所有的用户线程挂起,此时JVM中的用户程序被完全停止,直到STW结束之后才会恢复响应。因此,在STW发生时,JVW的用户程序无法响应外界请求,导致JVM所属的集群或应用无法正常运行,因此,需要对STW的出现进行及时检测,以通知到外界进行相应地操作,避免发生包含JVW的 ...
【技术保护点】
一种STW检测方法,其特征在于,包括:获取第一对象与第二对象各自被创建时的指针地址之间的初始地址差值,其中,所述第一对象与所述第二对象分别为预先创建的强引用对象,且所述第一对象与所述第二对象各自的指针地址之间还预先创建有至少一个第三对象,所述第三对象为弱引用对象;获取所述第一对象及所述第二对象各自的当前指针地址;基于所述第一对象与所述第二对象各自的当前指针地址,获取所述第一对象与所述第二对象之间的当前地址差值;将所述初始地址差值与所述当前地址差值进行比对,得到比对结果;在所述比对结果满足预设的地址距离变化条件时,生成所述JVM中可能出现STW的检测结果。
【技术特征摘要】
1.一种STW检测方法,其特征在于,包括:获取第一对象与第二对象各自被创建时的指针地址之间的初始地址差值,其中,所述第一对象与所述第二对象分别为预先创建的强引用对象,且所述第一对象与所述第二对象各自的指针地址之间还预先创建有至少一个第三对象,所述第三对象为弱引用对象;获取所述第一对象及所述第二对象各自的当前指针地址;基于所述第一对象与所述第二对象各自的当前指针地址,获取所述第一对象与所述第二对象之间的当前地址差值;将所述初始地址差值与所述当前地址差值进行比对,得到比对结果;在所述比对结果满足预设的地址距离变化条件时,生成所述JVM中可能出现STW的检测结果。2.根据权利要求1所述的方法,其特征在于,所述地址距离变化条件为:所述第一对象与所述第二对象之间的地址距离发生变化;所述比对结果满足预设的地址距离变化条件,包括:所述比对结果表明所述第一对象与所述第二对象的初始地址差值与当前地址差值比对不一致。3.根据权利要求1所述的方法,其特征在于,所述获取所述第一对象及所述第二对象各自的当前指针地址,包括:利用JNI方法,获取所述第一对象及所述第二对象各自的当前指针地址。4.根据权利要求1所述的方法,其特征在于,所述基于所述第一对象与所述第二对象各自的当前指针地址,获得所述第一对象与所述第二对象之间的当前地址差值,包括:将所述第二对象的当前指针地址的量值减去所述第一对象的当前指针地址的量值,得到量值减法结果;取所述量值减法结果的绝对值作为所述第一对象与所述第二对象之间的当前地址差值。5.一种STW检测装置,其特征在于,包括:初始差值获取单元,用于获取第一对象与第二对象各自被创建时的指针地址之间的初始地址差值,其中,所述第一对象与所述第二对象分别为预先创建的强引用对象,且所述第一对象与所述第二对象各自的指针地址之间还预先创建有至少一个第三对象,所述第三对象为弱引用对象;地址获取单元,用于获取所述第一对象及所述第二对象各自的当前指针地...
【专利技术属性】
技术研发人员:贾宏超,张庚昕,
申请(专利权)人:东软集团股份有限公司,
类型:发明
国别省市:辽宁,21
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。