网站首页 > java教程 正文
引言
在实际的生产系统中,经常会出现某个生产版本更新后,系统变得非常的卡顿或者是系统运行一段时间因内存空间不足后自动重启,出现这些问题之后呢,就需要通过内存分析工具来定位异常出现的原因以及问题代码的位置。如果系统突然变卡顿,可能是JVM参数需要调整,此时也可以通过内存分析工具查看GC频率和时长,调整jvm 堆内存配置,减少GC频率,也可以加快系统运行速度。本文主要介绍自己常用的内存分析工具以及对应的用法,为后续项目中GC调优做个记录。
Jmap
jmap命令可以用于查看JVM内存信息
- jmap -histo pid:查看类对应的示例个数以及所内内存大小,也可通过增加 > xxx.txt 将打印信息输出为文本文件
- instances:表示该类对应的示例数量
- byte:占用内存大小
- class name:类名,B代表byte[],C代表char[],I代表int[]
- jmap -dump:format=b,file=xxx.hprof pid:导出堆内空间dump文件
- jmap -heap pid:查询jvm堆空间内存配置
- -XX:+HeapDumpOnOutOfMemoryError :通过此参数设置当JVM内存溢出时,自动导出dump文件
- -XX:HeapDumpPath :自动导出的dump文件 对应导出目标路径
Jstack
jstack主要是用于查询java中存在的死锁
- jstack pid:查看JVM中存在的死锁以及分析导致死锁的代码位置
Jinfo
用于查看正在运行的java应用对应JVM参数,执行脚本为jinfo -flags pid
Jstat(重要)
jstat方法对GC调优的作用非常的大,可以直观地显示JVM堆空间各区域的内存使用量以及YoungGC和Full GC次数
- jstat -gc pid:查看当前java应用堆空间GC情况
- SxC:代表幸存区内存总大小
- SxU:代表survivor区内存使用量
- EC:eden区内存总大小
- EU:eden区已使用内存大小
- OC:old区内存总大小
- OU:old区已使用内存大小
- MC:方法区大小(元空间)
- MU:方法区使用大小
- CCSC:压缩类空间大小
- CCSU:压缩类空间使用大小
- YGC:年轻代垃圾回收次数
- YGCT:年轻代垃圾回收消耗时间,单位s
- FGC:老年代垃圾回收次数
- FGCT:老年代垃圾回收消耗时间,单位s
- GCT:垃圾回收消耗总时间,单位s
猜你喜欢
- 2024-12-03 从Java转储分析来改进Java应用程序的性能(上)
- 2024-12-03 JVM工具实战:线上问题排查与性能分析
- 2024-12-03 基于容器的Java内存参数解析
- 2024-12-03 6 个 Java 工具,轻松分析定位 JVM 问题
- 2024-12-03 生产环境Java应用服务内存泄漏分析与解决
- 2024-12-03 Java性能测试利器:JMH入门与实践|得物技术
- 2024-12-03 Java中的CPU占用高和内存占用高的问题排查
- 2024-12-03 Jmeter压力测试与监测cpu、内存、磁盘、网络等性能指标
- 2024-12-03 阿里巴巴Java性能调优实战:内存持续上升,我该如何排查问题?
- 2024-12-03 阿里三面必问JVM知识点- 使用堆外内存减少Full GC
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)