大家好我是小明,今天讲解JVM实践。
文章目录
- [1. JVM调优的参数可以在那里设置参数值???](#1. JVM调优的参数可以在那里设置参数值???)
- [2. JVM调优的参数都有哪些???](#2. JVM调优的参数都有哪些???)
- [3. JVM调优的工具??](#3. JVM调优的工具??)
- [4. java内存泄漏的排查思路(高频)??](#4. java内存泄漏的排查思路(高频)??)
- [5. CPU飙高的排查思路???](#5. CPU飙高的排查思路???)
总体学习大纲

1. JVM调优的参数可以在那里设置参数值???
jar 包部署在启动设置参数里
java
-Xms512m -Xmx1024m-jar xxx.jar
红色的就是启动参数
2. JVM调优的参数都有哪些???
- 设置堆空间大小
- 虚拟机栈的设置
- 年轻代中 Eden 区和两个 Survivor 区的大小比例
- 年轻代晋升老年代阈值
- 设置垃圾回收器
这些命令设置参数可以在开发环境虚拟机参数设置,可以在生产环境启动命令配置相关参数。
3. JVM调优的工具??
基本命令
- jps 进程状态信息
方式1:直接输出到终端(适合快速查看,日志较短时)
jstack <进程PID>
方式2:导出到文件(推荐,日志较长时,方便后续查找/分析)
jstack <进程PID> > /tmp/thread_stack_20260205.log
- jstack 查看java进程内线程的堆栈信息
- jmap 查看堆转信息
jmap -heap <进程PID>
两个可视化工具
-
jconsole 用于JVM的内存,线程,类的监控
-
VisualVM 能够监控线程,内存情况
4. java内存泄漏的排查思路(高频)??
假如说:在生产环境下,因为内存泄漏导致服务宕机
一般在生产环境发生这种事情
所以解决事情的方式是
- 通过 jmap 或设置 JVM 参数获取堆内存快照 dump。
- 通过工具,VisualVM 去分析 dump 文件,VisualVM 可以加载离线的 dump 文件。
- 通过查看堆信息的情况,可以大概定位内存溢出是哪行代码出了问题。
5. CPU飙高的排查思路???
-
使用top命令查看系统进程 CPU 占用情况。

-
使用ps命令查看进程中的线程信息,对应到具体线程。

-
使用jstack命令查看进程中哪些线程出现问题。

好了今天就到这里