JVM实践

大家好我是小明,今天讲解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内存泄漏的排查思路(高频)??

假如说:在生产环境下,因为内存泄漏导致服务宕机

一般在生产环境发生这种事情

所以解决事情的方式是

  1. 通过 jmap 或设置 JVM 参数获取堆内存快照 dump。
  2. 通过工具,VisualVM 去分析 dump 文件,VisualVM 可以加载离线的 dump 文件。
  3. 通过查看堆信息的情况,可以大概定位内存溢出是哪行代码出了问题。

5. CPU飙高的排查思路???

  1. 使用top命令查看系统进程 CPU 占用情况。

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

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


好了今天就到这里

相关推荐
AI人工智能+电脑小能手4 小时前
【大白话说Java面试题 第65题】【JVM篇】第25题:谈谈对 OOM 的认识
java·开发语言·jvm
小小编程路6 小时前
C++ 多线程与并发
java·jvm·c++
图像僧9 小时前
vs2019中的属性页使用说明
java·开发语言·jvm
m0_6174939411 小时前
PySide6 数据库操作深度实测:从 SQLite 连接到增删改查避坑指南
jvm·数据库·sqlite
夜白宋12 小时前
【JVM深入】一、基本内容
jvm
vKd0Ff21L13 小时前
如何在Dev-C++中设置TDM-GCC为默认编译器第九十一篇
java·jvm·c++
Dicky-_-zhang15 小时前
Elasticsearch聚合查询优化实战
java·jvm
AI人工智能+电脑小能手16 小时前
【大白话说Java面试题 第64题】【JVM篇】第24题:强引用、软引用、弱引用、虚引用分别是什么?
java·开发语言·jvm·面试
一生了无挂16 小时前
深入解析JVM、JRE与JDK:Java技术体系的核心基石
java·开发语言·jvm