当前位置:网站首页>尚硅谷-JVM-性能监控与调优篇(P302~P381)
尚硅谷-JVM-性能监控与调优篇(P302~P381)
2022-08-05 11:51:00 【胡宇乔】
第二篇字节码和类加载篇感觉用处不大,暂时跳过,直接开始性能监控和调优。但是是免费篇,讲的都是写工具、参数,实际案例比较少。
视频地址:
https://www.bilibili.com/video/BV1PJ411n7xZ?p=381&vd_source=510ec700814c4e5dc4c4fda8f06c10e8
文章目录
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对象包含多个对象下面的对象就是深堆,)
实际对象大小:对象中所有对象之和

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参数设置和日志监控,来分析代码写的是不是有问题,服务器配置是不是不行之类的。
边栏推荐
- 详细剖析 Redis 三种集群策略
- Zhihu asks: Can China still achieve great national rejuvenation?
- Machine Learning - Logistic Regression
- 不是吧?还有人不会定位线上MySQL慢查询问题?
- hdu1455 Sticks (search+pruning+pruning+.....+pruning)
- SonarQube即将亮相第十八届GOPS全球运维大会
- LeetCode brush questions (8)
- Keras 模型多输出 loss weight metrics 设置
- 碘乙酰胺在Desthiobiotin-Iodoacetamide试剂中的作用?
- 课表小程序使用攻略
猜你喜欢

【HMS core】【FAQ】Health Kit、Ads kit、push Kit典型问题合集5

.NET in-depth analysis of the LINQ framework (6: LINQ execution expressions)

灰度值与热成像理解

【无标题】

The training set Loss converges, but the test set Loss oscillates violently?
The importance of parameter naming, remember a JDBC parameter conflict

Version Control | Longzhi invites you to go to the GOPS Global Operation and Maintenance Conference to explore the road of large-scale, agile, high-quality and open software development and operation

再获殊荣 | 赛宁网安入选2022年度“培育独角兽”企业榜单

STM32H743IIT6学习笔记03——使用第三方组件FreeRTOS

Introduction to the Evolution of Data Governance System
随机推荐
Byte Qiu Zhao confused me on both sides, and asked me under what circumstances would the SYN message be discarded?
字节秋招二面把我干懵了,问我SYN报文什么情况下会被丢弃?
el-menu箭头改为右下
Cesium.js 地形挖洞
790. 数的三次方根
常用的免费Api接口网址
查询优化(TTFB过长)left join索引未生效
【硬件架构的艺术】学习笔记(3)处理多个时钟
ORACLE ASM提供的三种冗余方式
Integration testing of software testing
Three.js 点击模型,高亮发光模型外轮廓
冬日里,28℃的爱情
nyoj1185最大最小值(线段树)
D-Desthiobiotin-PEG4-Maleimide主要物理性质特点 !
Apache APISIX Ingress v1.5-rc1 发布
深度学习(四)分析问题与调参 理论部分
祝所有码农七夕快乐~
Cesium.js 三维土壤地质剖面分割挖掘
Memory problems difficult to locate, it is because you do not use ASAN
Visit GOPS Long Zhi booth, Forrester's latest report: "the Forrester Wave: the fourth quarter of 2021 enterprise service management report