[发明专利]一种性能分析方法和装置有效
申请号: | 202010513534.X | 申请日: | 2020-06-08 |
公开(公告)号: | CN111679984B | 公开(公告)日: | 2023-09-19 |
发明(设计)人: | 李文彬 | 申请(专利权)人: | 中国银行股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京三友知识产权代理有限公司 11127 | 代理人: | 王天尧;汤在彦 |
地址: | 100818 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 性能 分析 方法 装置 | ||
1.一种性能分析方法,其特征在于,包括:
将探针加入Java程序;
在JVM启动后对加入探针的Java程序进行字节码增强,确定跟踪信息;
根据跟踪信息,确定跟踪日志文件;
根据跟踪日志文件,确定方法栈信息;
根据方法栈信息,确定方法热点报告;
根据跟踪日志文件,确定方法栈信息,包括:
获取跟踪日志文件,从跟踪日志文件中读取跟踪信息,建立跟踪信息列表;
建立一个以线程名称为键值的线程字典桶;
从跟踪信息列表中获取跟踪信息里的线程名;
检查线程字典桶里是否存在线程名的信息;
如果线程字典桶里不存在线程名,则创建一个线程对象,创建一个栈对象,将当前跟踪信息丢入栈顶;将线程对象放入线程字典桶;
如果线程字典桶中存在线程名,则从线程字典桶里获取对应的线程对象;
判断跟踪信息里的出栈标志和入栈标志;
若跟踪信息里的标志为入栈标志时,将当前跟踪信息压入线程对象的栈对象中;
若跟踪信息里的标志为出栈标志时:令栈顶等于弹出线程对象的栈对象的栈顶信息;将当前跟踪信息与栈顶的时间戳相减,得到当前方法的运行总时长CT;构建方法栈数据;如果栈对象等于空,将方法栈数据输出到方法栈结果信息文件中;
重复执行从跟踪信息列表中获取下一跟踪信息里的线程名至得到方法栈结果信息文件的过程,直至获取跟踪信息列表中全部跟踪信息对应的方法栈结果信息文件;
将全部方法栈结果信息文件进行汇总,确定方法栈信息。
2.如权利要求1所述的方法,其特征在于,将探针加入Java程序,包括:
设置探针的诊断程序范围、显示方式和写入文件位置;
将设置好的探针加入Java程序。
3.如权利要求1所述的方法,其特征在于,在JVM启动后对加入探针的Java程序进行字节码增强,确定跟踪信息,包括:
在JVM启动后,运行Java程序入口方法之前启动探针;
在加载Java程序对应的类之前,对类进行字节码增强,获取进入方法前和方法返回后的跟踪信息,写入内存队列。
4.如权利要求3所述的方法,其特征在于,对类进行字节码增强,获取进入方法前和方法返回后的跟踪信息,写入内存队列,包括:
遍历加载的每个类名字,检查类名字是否包含在过滤器里,如果包含则进行字节码转换;
在进行字节码转换时,遍历当前类的全部方法,去掉设定开头的方法以及构造函数,将剩余的方法进入法级字节码增强;
在进入方法后,插入第一字节码;
在方法返回或抛出异常前,插入第二字节码;
根据第一字节码和第二字节码,获取进入方法前和方法返回后的跟踪信息,写入内存队列。
5.如权利要求3所述的方法,其特征在于,根据跟踪信息,确定跟踪日志文件,包括:
开启新的独立线程从内存队列中异步获取跟踪信息,持久化到跟踪日志文件。
6.如权利要求1所述的方法,其特征在于,所述跟踪信息,包括:调用链和跟踪信息;
所述调用链,包括:父方法和父方法调用的儿子方法构成的链式结构;
所述跟踪信息,包括:父方法的入栈时间戳和出栈时间戳,儿子方法的入栈时间戳和出栈时间戳。
7.如权利要求1所述的方法,其特征在于,所述当前方法的运行总时长CT为父方法的运行时长和父方法调用的全部儿子方法的运行时长的总和;
将当前方法的运行总时长CT减去父方法调用的全部儿子方法的运行时长,确定为父方法的运行时长CT2。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国银行股份有限公司,未经中国银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010513534.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:核对非结构化影像文件迁移准确性的方法和装置
- 下一篇:告警阈值生成方法及装置