Java 程序性能分析

jvisualvm 【jdk 自带工具】

程序启动添加jvm参数

-Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.port=8089 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

-Djava.rmi.server.hostname=127.0.0.1                              #服务器端ip
-Dcom.sun.management.jmxremote.port=8089                #服务器端 jmx开放的端口号
-Dcom.sun.management.jmxremote.ssl=false                  #关闭ssl
-Dcom.sun.management.jmxremote.authenticate=false   #关闭验证

参考链接:【java虚拟机】jvisualvm连接远程jvm_Jahnsonxi的博客-CSDN博客_jvm远程连接

CPU热点方法分析使用参考:实战 VisualVM 定位 Java 程序 CPU 热点_程序员石磊的博客-CSDN博客

内存泄漏分析参考:Java性能调优:利用VisualVM进行性能分析 - 朝雨忆轻尘 - 博客园

dump工具:Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation

async-profiler【火焰图】

https://github.com/jvm-profiling-tools/async-profiler

如果官方给的二进制文件如果出现 build/jattach 不能执行(报错如下),需要编译源码

build/jattach: cannot execute binary file

下载源码 https://github.com/jvm-profiling-tools/async-profiler/archive/v1.8.3.tar.gz

yum install gcc-c++    #安装编译器

make                   #编译

执行以下命令,可以输出火焰图

./profiler.sh -d 60 -f ./flamegraph.svg 16727

-d 60 表示采集周期为60s

-f ./flamegraph.svg 表示输出的火焰图图片的位置

16727 为java程序进程pid

Arthas Alibaba开源的Java诊断工具

代码:https://github.com/alibaba/arthas

文档:Arthas 用户文档 — Arthas 3.6.0 文档

下载jar包及依赖

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar  #第一次启动需要下载依赖,下载之后的文件就可以将依赖复制到不能联网的机器上使用了

(下载过jar包之后)启动的时候会让选择需要操作的java进程

常用命令:

dashboard 	展示当前进程的信息,包括线程的cpu、内存使用情况,堆内存使用情况,jdk版本等信息
thread 		获取当前线程
trace  		输出方法内部调用链的耗时,使用:trace 类的全路径 方法名,eg:trace demo.MathGame run
stack		输出当前方法被调用的调用路径使用:stack 类的全路径 方法名,eg:stack demo.MathGame run; stack demo.MathGame run '#cost > 10' -n 5,过滤耗时大于10ms的,只获取5条就停止,否则会一直刷屏
profiler    (使用async-profiler生成火焰图,上面下载的时候已经有async-profiler的依赖了,不需要自己单独安装)
	profiler start  开始收集应用cpu热点的火焰图
	profiler stop   结束收集应用cpu热点的火焰图。生成的结果保存到应用的工作目录下的arthas-output目录,可以通过 --file参数来指定输出结果路径。
	profiler status 查看收集状态

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值