3、JVM性能调优(性能测试jvm调优)

  本篇文章为你整理了3、JVM性能调优(性能测试jvm调优)的详细内容,包含有jvm性能优化 性能测试jvm调优 jvm调优怎么调 jvm调优的参数有哪些 3、JVM性能调优,希望能帮助你了解 3、JVM性能调优。

  [ interval [ count ]]
 

  
 

  如果只写1000,就是每一秒打印一次,一直打印
 

  如果带上10,就打印够10次,就不打印

  
手动方式:-dump:format-b,file=【输出路径】 进程id
 

  
 

  一般生成上使用-dump:live 只排查存活的对象就行了,不然这个hprof文件很大

  自动方式:-XX:+HeapDumpOnOutOfMemoryError 和 -XX:HeapDumpPath=【输出路径】.hprof
 

  这两个配置直接在家类的启动配置上就可以了,如果出现OOM,就会自动生成文件

  
-heap:输出整个堆的详细信息,包括GC和内存使用的信息

  -histo:输出对象统计信息,如果是-histo:live 就只统计存活对象

  
jhat:
 

  因为使用jmap导出的dump文件是二进制的,正常时没法看的,所以需要jhat工具搭配使用。
 

  使用jhat命令,就启动了一个http服务,端口是7000,本地访问:localhost:7000 就可以在这里解析,jhat在jdk9、10,以及被删除了,官方建议使用VisuslVM。

  jhat 【文件路径】:解析hprof文件
 

  
 

  显示Server is ready 服务已准备好,然后访问localhost:7000

  
-l: 列出所有JVM进程,直接光jcmd也是一样的效果
 

  进程id help:显示该进程id支持的所有指令
 

  进程id 具体命令:使用jcmd 进程id help查看命令后,使用支持进程的所有指令

  
jconsole

  查看JAVA应用程序概况,监控堆信息、永久区或元空间的使用情况,类加载情况。
 

  找到jdk安装目录的bin目录,双击点开就行
 

  Visual VM

  查看JAVA应用程序详细信息。

  生成堆dump文件:对准程序右键弹出
 

  如果想要保存这个dump文件,对这个文件右键,另存为
 

  想要打开dump文件,左上角 文件,选择 装入
 

  然后文件类型默认的要做选择
 

  
 

  点击打开
 

  线程分析:
 

  CPU和内存 抽样器
 

  
 

  点击CPU,会显示占用cpu时间比较长的方法,及占用时间的多少

  
 

  点击内存,显示哪些结构占用的字节数比较多

  第三方工具

  JProfiler

  商业工具,需要付费,功能强大。

  安装好JProfiler 以后,打开idea,下载插件JProfiler
 

  安装好JProfiler插件后,在左下栏找到Tools - JProfiler
 

  
 

  然后找到安装的JProfiler安装位置的exe启动文件,这样idea就和JProfiler关联起来了

  idea启动项目时候直接点击JProfiler启动就好了
 

  启动后就可以看到效果了
 

  主要检测的时摇杆、CPU、线程
 

  Arthas

  Alibaba开源java诊断工具,国内很流行。

  上面的工具比如:Visual VM 或者 JProfiler 都只适合项目上线之前在本地调试,如果项目部署在服务器,需要远程连接,需要配置参数,也要有相应的管理员给开通网络通道等,所以这个时候使用Arthas 就好多了。

  Arthas(阿尔萨斯)是Alibaba开源的java诊断工具,排查问题无需重启,动态跟踪java代码,实时监控jvm。
 

  使用:https://arthas.aliyun.com/zh-cn/
 

  下载:https://arthas.gitee.io/arthas-boot.jar

  windows系统的话,直接下载本地就好了,linux系统服务器上面的话上传上去就好了
 

  启动方式1:

  直接java -jar arthas-boot.jar 就可以了,显示所有java进程
 

  先测试几个指令,比如先输入dashboard:
 

  
 

  显示进程的相关情况,还在实时监控,快捷键ctrl + c就停止了

  再输入thread,就会显示线程信息:
 

  如果要退出arthas 的话,输入exit 就好了
 

  启动方式2:

  java -jar arthas-boot.jar 进程id:监测指定java进程
 

  还可以通过浏览器访问,ip + 8563端口
 

  基础指令
 

  
 

  指令文档:https://arthas.aliyun.com/doc/advanced-use.html

  运行时参数

  参数选项类型

  标准参数选项

  以-开头,比较稳定,后期基本不会变化
 

  cmd 打开命令行端口,输入java -help 可以看到很多 - 开头的参数选项
 

  -X 参数选项

  以-X开头,功能比较稳定,但官方说后续版本可能会变更
 

  命令行输入java -X就可以看到所有-X的参数选项
 

  很多-X 选项的参数等价于-XX 选项的参数

  -XX 参数选项

  以-XX开头,属于实验性的,不太稳定,是使用最多的参数类型
 

  -XX:+【选项】:表示启用选项属性
 

  -XX:-【选项】:表示禁用选项属性

  属性值为数字,比如:
 

  -XX:InitalHeapSize=100m,设置堆初始化大小100m,当然也可以使用-Xms100m来代替,是等价关系的。

  属性值为字符串的,比如:
 

  -XX:HeapDumpPath=/usr/local/heapdump.hprof,来指定导出hprof文件的路径,配合下面的几个指令使用

  -XX:HeapDumpOnOutOfMemoryError,出现OOM异常时候,会自动产生.hprof文件
 

  -XX:HeapDumpBeforeFullGC,要执行FullGC之前,生成转储文件

  GC日志相关参数设置

  -XX:PrintGC:输出简化的GC日志
 

  -XX:printGCDetails: 输出GC进行垃圾回收时的详细日志,并在进程退出时输出内存各区域分配情况
 

  -XX:+PrintGCTimeStamps: 输出GC发生时的时间戳
 

  -XX:+PrintGCDateStamps: 输出GC发生时的时间戳,以日期格式显示
 

  -XX:+PrintHeapAtGC: 每一次GC前后,都打印堆信息
 

  -Xloggc:【路径】 把GC日志写入到一个文件中,不会打印在输出

  以上就是3、JVM性能调优(性能测试jvm调优)的详细内容,想要了解更多 3、JVM性能调优的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: