Offer

尚硅谷-JVM-性能监控与调优篇(P302~P381)

第二篇字节码和类加载篇感觉用处不大,暂时跳过,直接开始性能监控和调优。但是是免费篇,讲的都是写工具、参数,实际案例比较少。

视频地址:

https://www.bilibili.com/video/BV1PJ411n7xZ?p=381&vd_source=510ec700814c4e5dc4c4fda8f06c10e8

csdn csdn csdn csdn csdn


🔥1.性能监控与调优篇

​ 分为性能监控(发现问题)、分析(排查问题)和调优(解决问题):最终目的还是要减少GC次数,保证系统性能

1.1. 性能监控

1.1.1 命令行监控
1.1.1.1 jps

java process status

-- 查看Hotspot虚拟机中正在运行的进程: pid 进程名
C:\Users\EDY>jps
18736 Jps
26500 RemoteMavenServer36
14712 RemoteMavenServer36
21452 Launcher
39372
46956 Launcher
1.1.1.2 jstat

监视虚拟机中运行状态:类加载,内存,垃圾收集等运行数据

C:\Users\EDY>jstat -class 26500
Loaded  Bytes  Unloaded  Bytes     Time
  5740 10533.0       25    25.2       2.23
1.1.1.3 jinfo

查看、调节虚拟机配置参数信息

--查看进程参数,也可以修改
C:\Users\EDY>jinfo -flags 42872

--增加参数
C:\Users\EDY>jinfo -flag +PrintGCDetails 42872
1.1.1.4 JVM默认值
--JVM启动默认值
C:\Users\EDY>java -XX:+PrintFlagsInitial >> 1.txt
--JVM最终默认值,可能程序会修改
C:\Users\EDY>java -XX:+PrintFlagsFinal >> 1.txt
1.1.1.5 Jmap

​ 导出内存映像文件和内存使用情况

1.1.2 GUI界面

​ GUI算是对命令行的升级。分为JDK自带和第三方工具

1.1.2.1 Jconsole
1.1.2.1 JvisualVM

​ dump文件:分析某个时刻内存、类个数、对象个数等信息情况

​ 抽样器:查看哪个线程占用CPU和内存过高的情况

.hprof:就是dump里面对象个数情况

​ 浅堆:对象所消耗内存,不包含内部引用对象大小

​ 深堆:只能通过一个对象直接或间接访问到所有对象的浅堆之和(比如A对象中有多个对象,对象下面还有对象,A中除去多个对象后的大小就是浅堆,整个A对象包含多个对象下面的对象就是深堆,)

​ 实际对象大小:对象中所有对象之和

image-20220728101413251

1.1.3 JProfile(略)

​ 就是和idea整合的内存分析工具

1.1.4 Arthas(略)

1.2 性能分析

1.2.1 内存泄漏
1.2.1.1 static集合

​ 长生命周期引用持有短生命周期对象导致不能被回收,就会导致内存泄漏

    //statics生命周期和JVM一致, 程序结束之前不能被释放
    static List list = new ArrayList();
    public static void staticCollection(){
        Object o = new Object();
        list.add(o);
    }
1.2.1.2 单例模式

单例对象持有外部对象引用

1.2.1.3 外部连接

​ 数据库连接,网络连接,IO连接,连接完了之后要关闭

1.2.1.4 变量作用域

能用局部变量的不要用全局变量

1.2.1.5 hashCode值

set.add一个对象后再把这个对象属性修改add,就会有2个相同属性的对象(因为刚开始计算hashcode是一个值,修改属性就会重新计算hashcode,因为底层是map,map存储元素就是拿hashcode来计算的),前一个对象就会造成内存泄漏,所以对于集合存了元素后,就不要再修改元素里面值了,类似redis和mysql关系

1.3 性能调优

1.3.1 JVM参数设置(略)

第一篇讲了很多了,后面用到了在看。分为-X(稳定)与-XX(不怎么稳定)

1.3.2 GC日志分析(略)

1.4 个人小结

总结,总的来说,本章分为一些命令行监控、GUI监控、第三方工具监控、JVM参数设置和日志监控,来分析代码写的是不是有问题,服务器配置是不是不行之类的。

posted @ 2022-07-31 12:24  Empirefree  阅读(81)  评论(0编辑  收藏  举报