【技术实现步骤摘要】
一种Java内存泄漏分析方法及装置
本专利技术实施例涉及计算机
,具体涉及一种Java内存泄漏分析方法及装置。
技术介绍
目前,针对程序的内存泄漏检查方式主要是内存快照分析与对比。具体的,测试人员在对程序测试过程中每隔预置时间抓取内存快照,并通过人工分析查找出相邻两次内存快照之间的差异,来找出那些没释放的对象。但是,利用上述现有的方法来检查内存泄漏需要测试人员对获取内存快照的时间的把握以及对业务有一定程度的了解,人工成本较高,而且获取内存快照的时间点容易出错,在设计上用作缓存的内存和没有及时释放的内存会被误判为泄漏的内存。
技术实现思路
由于现有方法存在上述问题,本专利技术实施例提出一种Java内存泄漏分析方法及装置。第一方面,本专利技术实施例提出一种Java内存泄漏分析方法,包括:将快照信息分为对象快照和集合对象快照两类,其中,所述集合对象快照只关注集合并且可收集集合写操作的调用栈,所述对象快照关注所有对象,但不会收集对象调用栈;按照预设集合对象快照采集规则,采集集合对象快照;按照预设对象快照采集规则,采集对象快照;根据所采集的对象快照和集合对象快照进行对比分 ...
【技术保护点】
1.一种Java内存泄漏分析方法,其特征在于,包括:将快照信息分为对象快照和集合对象快照两类,其中,所述集合对象快照只关注集合并且可收集集合写操作的调用栈,所述对象快照关注所有对象,但不会收集对象调用栈;按照预设集合对象快照采集规则,采集集合对象快照;按照预设对象快照采集规则,采集对象快照;根据所采集的对象快照和集合对象快照进行对比分析,获得Java内存泄漏分析结果。
【技术特征摘要】
1.一种Java内存泄漏分析方法,其特征在于,包括:将快照信息分为对象快照和集合对象快照两类,其中,所述集合对象快照只关注集合并且可收集集合写操作的调用栈,所述对象快照关注所有对象,但不会收集对象调用栈;按照预设集合对象快照采集规则,采集集合对象快照;按照预设对象快照采集规则,采集对象快照;根据所采集的对象快照和集合对象快照进行对比分析,获得Java内存泄漏分析结果。2.根据权利要求1所述的方法,其特征在于,所述根据所采集的对象快照和集合对象快照在线或离线进行对比分析,获得Java内存泄漏分析结果,包括:根据所采集的对象快照和集合对象快照,在线或离线进行对比分析,获得Java内存泄漏分析结果;和/或,所述采集集合对象快照和采集对象快照的动作是在检测到用户的触发指令时采集或者是按照预设时间定时采集。3.根据权利要求1所述的方法,其特征在于,所述按照预设集合对象快照采集规则,采集集合对象快照,包括:预先定义一个弱引用集合存放需要关注的集合对象的弱引用,每隔预设时间段采集需要关注的集合信息上报数据库,形成一次集合对象快照;其中:未开启内存快照功能不采集;集合内元素个数未达到预设第一阈值不采集;对象生存时间未达到预设第二阈值不采集;如果采集的对象在上报前被回收了,所述弱引用集合自动清理掉该对象;上报前判断集合的当前状态,如果当前集合内元素个数减少到所述预设第一阈值以下,清除对当前集合的引用,不上报当前集合的信息。4.根据权利要求3所述的方法,其特征在于,所述集合对象快照的采集利用了字节码注入技术,对所有实现了java.util.Collection和java.util.Map的类进行注入改造,所有对集合的写操作都先执行是否采集的判断。5.根据权利要求1所述的方法,其特征在...
【专利技术属性】
技术研发人员:易存道,
申请(专利权)人:北京宝兰德软件股份有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。