别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

常用工具

常用工具主要有 JDK 自带工具与 Arthas 这两种工具。

JDK 自带工具

jps 虚拟机进程状况工具

用于查看虚拟机进程状况的工具 命令示例

$ jps

15236 Jps

14966 Example1

jstat 虚拟机统计信息监视工具

用于查看虚拟机的堆内存,内存信息,类的装载和卸载信息等内容

显示堆内存信息


jstat -gc 14966

 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT

2048.0 2048.0 0.0 0.0 12800.0 9345.8 34304.0 26638.8 5248.0 4971.3 640.0 554.9 2 0.032 2 0.049 0.082

每隔 1000 毫秒打印堆内存信息,打印十次

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

查看类的装载和卸载信息


 $ jstat -class 14966

Loaded  Bytes  Unloaded  Bytes     Time

 829 1604.4 0 0.0 0.37

###Java 配置信息工具

查看JVM的启动参数


$ jinfo -flags 26472

VM Flags:

-XX:CICompilerCount=3 -XX:InitialHeapSize=52428800 -XX:MaxHeapSize=52428800 -XX:MaxNewSize=17301504 -XX:MinHeapDeltaBytes=524288 -XX:New 

jstack Java 堆栈跟踪工具

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

即,对当前的内存生成相关的快照,用于保存相关的快照信息。

jmap Kava 内存映射工具

用于查看内存对象数量和内存空间占用

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

jhat 生成 html 类型的快照文件


$ jhat dump.hprof

Reading from dump.hprof...

Dump file created Sun May 03 17:09:07 CST 2020

Snapshot read, resolving...

Resolving 42293 objects...

Chasing references, expect 8 dots........

Eliminating duplicate references........

Snapshot resolved.

Started HTTP server on port 7000

Server is ready

启动后,在浏览器打开,http://localhost:7000/

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

jvisualvm & VisualVM: 堆转储快照分析工具

和上方命令一样,直接导出文件,而不是网站

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

对象信息

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

线程信息

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

jconsole: JVM 性能监控

启动用户界面用于进行性能监控

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

启动成功以后

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

Arthas

阿里开源的Java诊断工具

安装

下载


wget https://alibaba.github.io/arthas/arthas-boot.jarjava -jar arthas-boot.jar

解压


 unzip arthas-packaging-bin.zip 

安装


sudo su adminrm -rf /home/admin/.arthas/lib/*cd arthas./install-local.sh

启动


./as.sh 

help

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

dashboard 实时数据面板

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

thread 线程信息

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

jad 反编译类

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

watch 数据观测

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

调优

部署方式

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

服务器经常出现卡顿

这是由于 Full GC 时间过长导致,原因一般是

  1. 新生代太小,对象提前进入老年代,触发 Full GC

  2. 老年代较大,一次 Full GC 时间较长

解决方案是 调小 NewRatio 的值,尽可能的减少对象进入老年代

调整内存占用

直接内存

调整 XX:MaxDirectMemorySize 避免发生 OutOfMemoryError: Direct buffer memory

线程堆栈

调整 -Xss 避免发生 *Error 或 OutOfMemoryError: unable to create new native thread

从 GC 角度解决新生代大量对象存活,Minor GC 时间过长

参数调整


-XX:SurvivorRatio=65536

-XX:MaxTenuringThreshold=0

-XX:AlwaysTenure 

作者:___mySoul

最后

如果大家需要这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档的话,可以戳这里即可免费获取!

祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!

感谢大家的支持!!

别再说你不会-JVM-性能监控和调优了,看完这篇再发言!

aysTenure


> 作者:___mySoul

### 最后

**如果大家需要这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档的话,[可以戳这里即可免费获取!](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)**

祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!

感谢大家的支持!!

[外链图片转存中...(img-JnDw7mNP-1623500367499)]


上一篇:java面试机试题,透彻分析源码


下一篇:Java开发还会吃香吗?瞬间高大上了!