CN111414253A - 垃圾回收GC信息处理方法、Java虚拟机及计算机存储介质 - Google Patents
垃圾回收GC信息处理方法、Java虚拟机及计算机存储介质 Download PDFInfo
- Publication number
- CN111414253A CN111414253A CN202010194357.3A CN202010194357A CN111414253A CN 111414253 A CN111414253 A CN 111414253A CN 202010194357 A CN202010194357 A CN 202010194357A CN 111414253 A CN111414253 A CN 111414253A
- Authority
- CN
- China
- Prior art keywords
- information
- target program
- target
- message queue
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 13
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 238000000034 method Methods 0.000 claims abstract description 52
- 238000004458 analytical method Methods 0.000 claims abstract description 47
- 230000007246 mechanism Effects 0.000 claims abstract description 24
- 238000011084 recovery Methods 0.000 claims abstract description 4
- 238000004891 communication Methods 0.000 claims description 19
- 230000006399 behavior Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 6
- 238000002347 injection Methods 0.000 claims description 4
- 239000007924 injection Substances 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 11
- 238000004817 gas chromatography Methods 0.000 description 8
- 239000000243 solution Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004064 recycling Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 230000004083 survival effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供了一种垃圾回收GC信息处理方法、Java虚拟机及计算机存储介质,所述方法包括:在运行中的目标程序中注入GC信息投递代码,当所述目标程序触发GC机制时,执行所述GC信息投递代码,以将所述目标程序的GC信息发送至目标消息队列;根据预设解析规则,解析所述目标消息队列中的GC信息,输出针对所述GC信息的解析结果。通过向运行中的目标程序中动态注入GC信息投递代码,无需导出文件,无需重启目标程序,也无需修改目标程序的源代码,侵入式的收集目标程序的实时GC信息,实现对目标程序内存状态的动态监测,避免JVM出现内存泄漏异常,提高了JVM服务的稳定性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种垃圾回收GC信息处理方法、Java虚拟机及计算机存储介质。
背景技术
Java提供的垃圾回收(Garbage Collection,GC)机制可以自动监测Java程序中的对象是否超过作用域,并将已经超过作用域的对象侵占的内存释放,从而达到自动回收内存的目的。
现有技术中,当Java虚拟机(Java Virtual Machine,JVM)出现内存溢出(Out OfMemory,OOM)异常时,使用Java开发工具包(Java SE Development kit,JDK)自带的Java虚拟机统计信息工具(Java Virtual Machine statistics monitoring tool,Jstat),将JVM的GC信息导出成dump文件后,使用一些工具插件对GC信息进行分析,才能获取JVM的内存状态。但当JVM出现OOM异常时已经影响到了服务的稳定性。
可见,现有技术中存在JVM服务稳定性较差的问题。
发明内容
本发明实施例的目的在于提供一种垃圾回收GC信息处理方法、Java虚拟机及计算机存储介质,通过对GC信息及时处理和解析,提高JVM服务稳定性。具体技术方案如下:
在本发明实施的第一方面,首先提供了一种垃圾回收GC信息处理方法,包括:
在运行中的目标程序中注入GC信息投递代码,所述GC信息投递代码用于将所述目标程序的GC信息发送至目标消息队列;
当所述目标程序触发GC机制时,执行所述GC信息投递代码,以将所述目标程序的GC信息发送至目标消息队列;
根据预设解析规则,解析所述目标消息队列中的GC信息,输出针对所述GC信息的解析结果。
在本发明实施的第二方面,还提供了一种Java虚拟机,包括:
注入模块,用于在运行中的目标程序中注入GC信息投递代码,所述GC信息投递代码用于将所述目标程序的GC信息发送至目标消息队列;
投递模块,用于当所述目标程序触发GC机制时,执行所述GC信息投递代码,以将所述目标程序的GC信息发送至目标消息队列;
解析模块,用于根据预设解析规则,解析所述目标消息队列中的GC信息,输出针对所述GC信息的解析结果。
在本发明实施的第三方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现本发明实施例第一方面中所述的方法步骤。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的垃圾回收GC信息的处理方法。
在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的垃圾回收GC信息的处理方法。
本发明实施例提供的垃圾回收GC信息处理方法、Java虚拟机及计算机存储介质,在运行中的目标程序中注入GC信息投递代码,当所述目标程序触发GC机制时,执行所述GC信息投递代码,以将所述目标程序的GC信息发送至目标消息队列;根据预设解析规则,解析所述目标消息队列中的GC信息,输出针对所述GC信息的解析结果。通过向运行中的目标程序中动态注入GC信息投递代码,无需导出文件,无需重启目标程序,也无需修改目标程序的源代码,侵入式的收集目标程序的实时GC信息,实现对目标程序内存状态的动态监测,避免JVM出现OOM异常,提高了JVM服务的稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例中一种垃圾回收GC信息处理方法的流程图;
图2为本发明实施例中另一种垃圾回收GC信息处理方法的流程图;
图3是本发明实施例中一种Java虚拟机的结构图;
图4是本发明实施例中另一种Java虚拟机的结构图;
图5是本发明实施例中又一种Java虚拟机的结构图;
图6是本发明实施例中一种电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
实施例一
请参见图1,图1是本发明实施例提供的一种垃圾回收GC信息处理方法的流程图,该方法可以应用于JVM。
如图1所示,所述方法包括以下步骤:
步骤101、在运行中的目标程序中注入GC信息投递代码,所述GC信息投递代码用于将所述目标程序的GC信息发送至目标消息队列;
步骤102、当所述目标程序触发GC机制时,执行所述GC信息投递代码,以将所述目标程序的GC信息发送至目标消息队列;
步骤103、根据预设解析规则,解析所述目标消息队列中的GC信息,输出针对所述GC信息的解析结果。
Java程序在JVM上增加垃圾回收GC机制,用于自动监测Java程序中的对象是否超过作用域,并将已经超过作用域的对象侵占的内存释放,实现自动回收内存。上述对象是指一个存储器地址,其可以是一个变量、一个数据结构或者是一个函数。在Java程序执行时,JVM会为不同的对象分配内存空间进行存值,当该对象不再使用,或者说不再被引用后,Java程序将会启动GC机制将其销毁,并释放其所占用的内存。
通过分析Java程序的GC信息,可以获取Java程序中可能存在的内存问题。
本发明实施例中,在JVM的目标程序运行过程中动态注入GC信息投递代码,上述GC信息投递代码用于在目标程序触发GC机制时,将所有GC信息投递至目标消息队列。之后,可对目标消息队列接收到的GC信息根据预设的解析机制进行解析,通过解析结果分析当前目标程序中的GC信息。
GC信息可以理解为Java程序中所有被回收的对象的内存信息集合,每一对象被回收一次即可生成一条GC信息。具体的,每条GC信息包括当前GC对象被回收的时间点、当前GC的类型、当前GC对象被回收之前占用的内存空间以及当前GC对象被回收之后还占用的内存空间等信息。通过对GC信息进行解析,获取当前目标程序中可能存在的内存问题,便于开发人员及时处理。
GC信息投递代码中包括定位目标程序中GC方法的业务逻辑和发送消息方法的业务逻辑,可以跟踪目标程序中GC方法的执行,当目标程序触发GC方法时,获取GC信息,并基于发送消息的业务逻辑将GC信息发送至目标消息队列。
步骤101中,可基于动态字节码修改技术将GC信息投递代码注入正在运行的目标程序中,具体注入的位置可以是目标程序的GC方法上,当目标程序触发GC方法进行无用对象的清理时,目标程序即可执行上述GC信息投递代码,将回收的GC信息发送至目标消息队列。
动态字节码修改技术通过修改字节码文件的字节码,实现动态修改目标程序中某一类的结构。其中,目标程序的字节码文件是由.java源文件编译而成的.class二进制字节码文件,JVM通过读取目标程序源文件对应的字节码文件运行该目标程序,动态修改字节码就是动态修改.class二进制字节码文件。
基于动态字节码修改技术将GC信息投递代码注入正在运行的目标程序中,无需重启目标程序,也无需修改目标程序的源代码,即可实现对目标程序的GC方法的动态监测,侵入式的收集目标程序的GC信息。具体实现过程可参考现有技术中动态修改字节码的工具和方法,在此不再赘述。
步骤102中,在GC信息投递代码注入目标程序之后,当目标程序触发GC机制时,目标程序则执行GC信息投递代码,收集当前目标程序中的所有GC信息,并基于GC信息投递代码中发送消息的业务逻辑,将收集到的GC信息发送至目标消息队列。其中,发送GC信息的业务逻辑可以调用Java程序中任意MQ(message queue,消息队列)的发送消息方法实现,可以是activeMQ、rabbitMQ也可以是kafka,在此不作任何限定。
通过步骤101和步骤102,可将收集到的GC信息以消息的形式发送至目标消息队列。此时,目标消息队列中的消息流即包含有目标程序中当前所有的GC信息。
步骤103中,由于GC信息中包括当前GC对象被回收的时间点、当前GC对象的GC类型、当前GC对象被回收之前占用的内存空间以及当前GC对象被回收之后还占用的内存空间等信息,根据预设的解析规则,可对目标消息队列的消息流进行解析,输出解析结果。
上述对目标消息队列的消息流进行解析可以理解为:获取收集到的GC信息,并进行整理和统计。上述预设的解析规则可以是自定义的多种解析规则,例如根据GC对象的GC类型对GC信息进行统计,分析当前目标程序中主要进行的GC类型,GC类型可反映被回收的对象的存活时间;或者根据当前GC对象被回收之前占用的内存空间进行解析,分析当前目标程序中个对象占用内存空间的情况。可以理解的是,预设的解析规则的实现形式并不限于此,在此不作任何限定。
上述输出解析结果可以理解为:将解析结果显示供开发人员查看,也可以理解为:将解析结果输出至特定的数据处理工具,以使该数据处理工具对解析结果生成可读的分析结果,例如可视化的分析结果。可以理解的是,输出解析结果的实现形式并不限于此,在此不作任何限定。在此不作任何限定。
本发明实施例中,在运行中的目标程序中注入GC信息投递代码,当所述目标程序触发GC机制时,执行所述GC信息投递代码,以将所述目标程序的GC信息发送至目标消息队列;根据预设解析规则,解析所述目标消息队列中的GC信息,输出针对所述GC信息的解析结果。通过向运行中的目标程序中动态注入GC信息投递代码,无需导出文件,无需重启目标程序,也无需修改目标程序的源代码,侵入式的收集目标程序的实时GC信息,实现对目标程序内存状态的动态监测,避免JVM出现OOM异常,提高了JVM服务的稳定性。
实施例二
请参见图2,图2是本发明实施例提供的另一种垃圾回收GC信息处理方法的流程图,该方法可以应用于JVM。
如图2所示,所述方法包括以下步骤:
步骤201、在运行中的目标程序中注入GC信息投递代码,所述GC信息投递代码用于将所述目标程序的GC信息发送至目标消息队列;
步骤202、当所述目标程序触发GC机制时,根据所述GC信息投递代码,获取所述目标程序的GC信息,所述GC信息包括GC对象的内存信息;
步骤203、根据所述目标程序的服务类型,将所述目标程序的GC信息发送至与所述服务类型对应的目标消息队列;
步骤204、根据预设解析规则,解析所述目标消息队列中的GC信息,输出针对所述GC信息的解析结果。
本实施例中,步骤201的具体实现形式可参考如图1所示实施例中步骤101的说明,为避免重复,在此不再赘述。
可选的,在运行中的目标程序中注入GC信息投递代码,包括:
调用BTrace工具在运行中的目标程序中注入GC信息投递代码。
BTrace工具可基于动态字节码修改技术实现运行时Java程序的跟踪和替换,也就是说,BTrace工具本身具有向运行中的Java程序动态的注入预先编写好的脚本,以获取Java程序执行过程中的信息的功能。
在具体实现时,可在JVM中预先安装BTrace工具,并在BTrace工具中编写好GC信息投递代码对应的脚本。之后,根据目标程序所部署的服务器信息,配置好对应的项目信息,即可启动BTrace工具,将编写好的GC信息投递代码注入到目标程序的GC方法上。
通过调用BTrace工具在运行中的目标程序中注入GC信息投递代码,使得注入GC信息投递代码的过程更加方便,降低了GC信息处理的困难性。
需要说明的是,上述实施例的技术方案同样适用于实施例一中的技术方案,且能实现同样的技术效果,为避免重复,在此不再赘述。
步骤202中,当所述目标程序触发GC机制时,目标程序即开始执行GC信息投递代码。首先获取目标程序的GC信息,其中,GC信息包括GC对象的内存信息。JVM可以根据当前触发的GC方法的类型,获取当前GC对象列表及其对应的内存信息。
步骤203中,根据所述目标程序的服务类型,将所述目标程序的GC信息发送至与所述服务类型对应的目标消息队列。相同服务类型的Java程序中执行GC所回收的对象具有共通性,将服务类型相同的目标程序的GC信息发送至统一目标消息队列中,实现对GC信息的分类收集,使得GC信息的投递逻辑更加清晰,也有利于后续对不同服务类型的消息队列,依据其不同的特点,分别进行解析。
在一些实施例中,GC信息投递代码可表现为如下所示:
@OnMethod\(clazz="java.lang.System",method="gc"\)
//获取GC状态
List<GarbageCollectorMXBean>gcs=
ManagementFactory.getGarbageCollectorMXBeans();
//将GC信息发送到MQ
jmsTemplate.send(mqTopic,session->session.createTextMessage(gcs);
其中,GarbageCollectorMXBean为目标程序中的GC对象列表,jmsTemplate为Java发送消息的方法,Topic为不同服务类型的目标程序对应的目标消息队列,jmsTemplate可实现将不同服务类型的目标程序中收集的GC信息,发送至与服务类型对应的Topic上。可以理解的是,GC信息投递代码也可表现为其他形式,在此不作限定。
可选的,根据所述目标程序的服务类型,将所述目标程序的GC信息发送至与所述服务类型对应的目标消息队列,包括:
根据所述目标程序的服务类型,基于kafka消息发送方法,将所述目标程序的GC信息发送至与所述服务类型对应的所述目标消息队列。
上述实施例中,采用的发送消息的方法为kafka消息发送方法,则所述目标消息队列包括kafka消息队列。kafka消息队列可以实现消息流的流式处理,保证消息流处理的实时性,实现对收集到的GC信息的实时解析,方便开发人员对目标程序中内存状态的动态监测。此外,kafka消息队列的消息流支持大数据场景,方便后续对GC信息的大数据统计和分析。
需要说明的是,上述实施例的技术方案同样适用于实施例一中的技术方案,且能实现同样的技术效果,为避免重复,在此不再赘述。
步骤204的具体实现形式可参考如图1所示实施例中步骤101的说明,为避免重复,在此不再赘述。
可选的,所述方法还包括:
根据所述解析结果,若存在具有预设行为的GC对象时,进行报警提示。
上述实施例中,可预先设置一些可能影响JVM内存状态的GC行为,当步骤204输出的解析结果中存在具有上述预设行为的GC对象时,JVM可进行报警提示,提醒开发人员对具有上述预设行为的GC对象,并实施相应的优化操作。
进一步的,所述具有预设行为的GC对象包括以下至少一项:
进行GC的次数超过第一预设阈值的GC对象;
占用内存空间超过第二预设阈值的GC对象。
上述实施例中,当根据解析结果,存在进行GC的次数超过第一预设阈值的GC对象时,说明该GC对象频繁的进行GC,此时可以进行报警提示。开发人员可根据具体情况对该GC对象进行处理,例如,若该GC对象为一临时变量,当其被频繁的进行GC时,可以考虑为其分配固定的内存空间。其中,第一预设阈值可以为3次或者5次,具体可根据目标程序的属性进行确定,在此不作任何限定。
当根据解析结果,存在占用内存空间超过第二预设阈值的GC对象可以理解为:该对象所占用的内存空间一直没有被回收,或者回收失败。在这种情况下该GC对象占用的空间越大,导致JVM出现OOM的风险就越高,严重影响服务的稳定性,此时可以进行报警提示。开发人员可对占用内存空间较大的GC对象进行清除。其中,第二预设阈值可根据目标程序的属性进行具体确定,在此不作任何限定。
需要说明的是,上述实施例的技术方案同样适用于实施例一中的技术方案,且能实现同样的技术效果,为避免重复,在此不再赘述。
本实施例中,在实施例一的基础上,增加了多种实现方式,进一步提高了GC信息处理的效率,进一步提高了JVM服务的稳定性。
请参见图3,图3是本发明实施例提供的一种Java虚拟机的结构图。
如图3所示,Java虚拟机300包括:
注入模块301,用于在运行中的目标程序中注入GC信息投递代码,所述GC信息投递代码用于将所述目标程序的GC信息发送至目标消息队列;
投递模块302,用于当所述目标程序触发GC机制时,执行所述GC信息投递代码,以将所述目标程序的GC信息发送至目标消息队列;
解析模块303,用于根据预设解析规则,解析所述目标消息队列中的GC信息,输出针对所述GC信息的解析结果。
可选的,注入模块301具体用于:
调用BTrace工具在运行中的目标程序中注入GC信息投递代码。
可选的,如图4所示,投递模块302包括:
获取单元3021,用于当所述目标程序触发GC机制时,根据所述GC信息投递代码,获取所述目标程序的GC信息,所述GC信息包括GC对象的内存信息;
投递单元3022,用于根据所述目标程序的服务类型,将所述目标程序的GC信息发送至与所述服务类型对应的目标消息队列。
可选的,投递单元3022具体用于:
根据所述目标程序的服务类型,基于kafka消息发送方法,将所述目标程序的GC信息发送至与所述服务类型对应的所述目标消息队列。
可选的,如图5所示,Java虚拟机300还包括:
报警模块304,用于根据所述解析结果,若存在具有预设行为的GC对象时,进行报警提示。
可选的,所述具有预设行为的GC对象包括以下至少一项:
进行GC的次数超过第一预设阈值的GC对象;
占用内存空间超过第二预设阈值的GC对象。
Java虚拟机300能够实现如图1至图2所示的方法实施例中实现的各个过程,为避免重复,这里不再赘述。
请参见图6,图6是本发明实施例提供的一种电子设备的结构图。
如图6所示,电子设备600包括处理器601、通信接口602、存储器603及通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信。
其中,存储器603用于存放计算机程序。
其中,处理器601用于执行存储器603上所存放的程序时,实现如下步骤:
在运行中的目标程序中注入GC信息投递代码,所述GC信息投递代码用于将所述目标程序的GC信息发送至目标消息队列;
当所述目标程序触发GC机制时,执行所述GC信息投递代码,以将所述目标程序的GC信息发送至目标消息队列;
根据预设解析规则,解析所述目标消息队列中的GC信息,输出针对所述GC信息的解析结果。
可选的,所述在运行中的目标程序中注入GC信息投递代码,包括:
调用BTrace工具在运行中的目标程序中注入GC信息投递代码。
可选的,所述当所述目标程序触发GC机制时,执行所述GC信息投递代码,包括:
当所述目标程序触发GC机制时,根据所述GC信息投递代码,获取所述目标程序的GC信息,所述GC信息包括GC对象的内存信息;
根据所述目标程序的服务类型,将所述目标程序的GC信息发送至与所述服务类型对应的目标消息队列。
可选的,所述根据所述目标程序的服务类型,将所述目标程序的GC信息发送至与所述服务类型对应的目标消息队列,包括:
根据所述目标程序的服务类型,基于kafka消息发送方法,将所述目标程序的GC信息发送至与所述服务类型对应的所述目标消息队列。
可选的,所述方法还包括:
根据所述解析结果,若存在具有预设行为的GC对象时,进行报警提示。
可选的,所述具有预设行为的GC对象包括以下至少一项:
进行GC的次数超过第一预设阈值的GC对象;
占用内存空间超过第二预设阈值的GC对象。
上述电子设备600提到的通信总线604可以是外设部件互连标准(PeripheralComponent Interconnect,简称PCI)总线或扩展工业标准结构( ExtendedIndustryStandard Architecture,简称EISA)总线等。该通信总线604可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口602用于上述电子设备600与其他设备之间的通信。
存储器603可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器601可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的垃圾回收GC信息的处理方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的垃圾回收GC信息的处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (14)
1.一种垃圾回收GC信息处理方法,其特征在于,所述方法包括以下步骤:
在运行中的目标程序中注入GC信息投递代码,所述GC信息投递代码用于将所述目标程序的GC信息发送至目标消息队列;
当所述目标程序触发GC机制时,执行所述GC信息投递代码,以将所述目标程序的GC信息发送至目标消息队列;
根据预设解析规则,解析所述目标消息队列中的GC信息,输出针对所述GC信息的解析结果。
2.根据权利要求1所述的方法,其特征在于,所述在运行中的目标程序中注入GC信息投递代码,包括:
调用BTrace工具在运行中的目标程序中注入GC信息投递代码。
3.根据权利要求1所述的方法,其特征在于,所述当所述目标程序触发GC机制时,执行所述GC信息投递代码,包括:
当所述目标程序触发GC机制时,根据所述GC信息投递代码,获取所述目标程序的GC信息,所述GC信息包括GC对象的内存信息;
根据所述目标程序的服务类型,将所述目标程序的GC信息发送至与所述服务类型对应的目标消息队列。
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标程序的服务类型,将所述目标程序的GC信息发送至与所述服务类型对应的目标消息队列,包括:
根据所述目标程序的服务类型,基于kafka消息发送方法,将所述目标程序的GC信息发送至与所述服务类型对应的所述目标消息队列。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述解析结果,若存在具有预设行为的GC对象时,进行报警提示。
6.根据权利要求5所述的方法,其特征在于,所述具有预设行为的GC对象包括以下至少一项:
进行GC的次数超过第一预设阈值的GC对象;
占用内存空间超过第二预设阈值的GC对象。
7.一种Java虚拟机,其特征在于,所述Java虚拟机包括:
注入模块,用于在运行中的目标程序中注入GC信息投递代码,所述GC信息投递代码用于将所述目标程序的GC信息发送至目标消息队列;
投递模块,用于当所述目标程序触发GC机制时,执行所述GC信息投递代码,以将所述目标程序的GC信息发送至目标消息队列;
解析模块,用于根据预设解析规则,解析所述目标消息队列中的GC信息,输出针对所述GC信息的解析结果。
8.根据权利要求7所述的Java虚拟机,其特征在于,所述注入模块具体用于:
调用BTrace工具在运行中的目标程序中注入GC信息投递代码。
9.根据权利要求7所述的Java虚拟机,其特征在于,所述投递模块包括:
获取单元,用于当所述目标程序触发GC机制时,根据所述GC信息投递代码,获取所述目标程序的GC信息,所述GC信息包括GC对象的内存信息;
投递单元,用于根据所述目标程序的服务类型,将所述目标程序的GC信息发送至与所述服务类型对应的目标消息队列。
10.根据权利要求9所述的Java虚拟机,其特征在于,所述投递单元具体用于:
根据所述目标程序的服务类型,基于kafka消息发送方法,将所述目标程序的GC信息发送至与所述服务类型对应的所述目标消息队列。
11.根据权利要求7所述的Java虚拟机,其特征在于,所述Java虚拟机还包括:
报警模块,用于根据所述解析结果,若存在具有预设行为的GC对象时,进行报警提示。
12.根据权利要求11所述的Java虚拟机,其特征在于,所述具有预设行为的GC对象包括以下至少一项:
进行GC的次数超过第一预设阈值的GC对象;
占用内存空间超过第二预设阈值的GC对象。
13.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1至6中任一所述的方法步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010194357.3A CN111414253A (zh) | 2020-03-19 | 2020-03-19 | 垃圾回收GC信息处理方法、Java虚拟机及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010194357.3A CN111414253A (zh) | 2020-03-19 | 2020-03-19 | 垃圾回收GC信息处理方法、Java虚拟机及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111414253A true CN111414253A (zh) | 2020-07-14 |
Family
ID=71491165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010194357.3A Pending CN111414253A (zh) | 2020-03-19 | 2020-03-19 | 垃圾回收GC信息处理方法、Java虚拟机及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111414253A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170538A (zh) * | 2017-12-08 | 2018-06-15 | 北京奇艺世纪科技有限公司 | 一种信息处理方法、装置以及电子设备 |
CN109597676A (zh) * | 2018-10-25 | 2019-04-09 | 平安科技(深圳)有限公司 | 基于jvm的监控预警方法、装置及存储介质 |
CN110083436A (zh) * | 2019-05-14 | 2019-08-02 | 上海理想信息产业(集团)有限公司 | 一种基于Java字节码增强技术的业务数据实时监控系统及方法 |
-
2020
- 2020-03-19 CN CN202010194357.3A patent/CN111414253A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170538A (zh) * | 2017-12-08 | 2018-06-15 | 北京奇艺世纪科技有限公司 | 一种信息处理方法、装置以及电子设备 |
CN109597676A (zh) * | 2018-10-25 | 2019-04-09 | 平安科技(深圳)有限公司 | 基于jvm的监控预警方法、装置及存储介质 |
CN110083436A (zh) * | 2019-05-14 | 2019-08-02 | 上海理想信息产业(集团)有限公司 | 一种基于Java字节码增强技术的业务数据实时监控系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10838838B2 (en) | Method and apparatus for dealing with abnormality of application program and storage medium | |
CN110309029B (zh) | 异常数据的采集方法、装置、计算机设备和存储介质 | |
CN110347716B (zh) | 日志数据处理方法、装置、终端设备及存储介质 | |
US10481964B2 (en) | Monitoring activity of software development kits using stack trace analysis | |
WO2018072408A1 (zh) | 一种内存分析方法、装置、系统以及计算设备 | |
CN111124906A (zh) | 基于动态埋点的跟踪方法、编译方法、装置和电子设备 | |
CN108197032B (zh) | Ios应用的主线程卡顿监测方法、介质、设备及系统 | |
CN109656773B (zh) | 一种基于ios系统应用异常崩溃的处理框架 | |
CN111291384B (zh) | 漏洞扫描方法、装置及电子设备 | |
CN105512015A (zh) | 一种安卓目标应用崩溃统计方法和装置 | |
CN114880159B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN110716848A (zh) | 数据收集方法、装置、电子设备及存储介质 | |
CN108153654B (zh) | 一种日志收集方法及装置 | |
CN110597694A (zh) | 一种监控前端页面的方法及终端 | |
CN110457132B (zh) | 一种功能对象的创建方法、装置和终端设备 | |
CN115186274A (zh) | 基于iast的安全测试方法及装置 | |
CN111488257A (zh) | 一种云服务链路跟踪监控方法、装置、设备及存储介质 | |
CN109559121B (zh) | 交易路径调用异常分析方法、装置、设备及可读存储介质 | |
CN107741891B (zh) | 对象的析构方法、介质、装置和计算设备 | |
CN106383869B (zh) | 一种获取用户行为信息的方法及装置 | |
CN110309028B (zh) | 监控信息获取方法、服务监控方法、装置及系统 | |
CN111414253A (zh) | 垃圾回收GC信息处理方法、Java虚拟机及计算机存储介质 | |
CN112860235B (zh) | 处理文本的方法、装置、设备和存储介质 | |
CN111414270B (zh) | 一种异常处理方法及装置 | |
US9317262B2 (en) | Identification of code synchronization points |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200714 |