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命令查看进程中哪些线程出现问题。


好了今天就到这里

相关推荐
m0_6245785911 小时前
MySQL主从复制支持跨版本吗_不同版本间同步的注意事项
jvm·数据库·python
2401_8714928512 小时前
如何在 React Router v6 中正确配置多路由组件显示
jvm·数据库·python
zhangchaoxies13 小时前
MySQL触发器能否监控特定用户操作_结合审计功能实现分析
jvm·数据库·python
qq_4135020213 小时前
如何解决ORA-12518监听程序无法分配进程_内存耗尽与PGA溢出
jvm·数据库·python
djjdjdjdjjdj14 小时前
如何用参数解构在函数入口处直接提取对象属性
jvm·数据库·python
forEverPlume14 小时前
mysql如何批量增加表的字段_脚本化DDL操作实践
jvm·数据库·python
m0_5964063714 小时前
CSS如何高效引入样式表_对比link标签与import指令的性能差异
jvm·数据库·python
我命由我1234515 小时前
Java 开发 - CountDownLatch 不需要手动关闭
android·java·开发语言·jvm·kotlin·android studio·android-studio
weixin_5689960615 小时前
c++如何实现日志文件的异步落盘功能_基于无锁队列方案【附代码】
jvm·数据库·python
2401_8314194416 小时前
CSS 悬停箭头闪烁下移问题的根源与稳定解决方案
jvm·数据库·python