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


好了今天就到这里

相关推荐
团子的二进制世界2 小时前
JVM为什么能跨平台、原理是什么
jvm
m0_7066532316 小时前
用Python批量处理Excel和CSV文件
jvm·数据库·python
qq_4232339017 小时前
Python深度学习入门:TensorFlow 2.0/Keras实战
jvm·数据库·python
2401_8365631818 小时前
用Python读取和处理NASA公开API数据
jvm·数据库·python
难得的我们18 小时前
超越Python:下一步该学什么编程语言?
jvm·数据库·python
OnYoung20 小时前
编写一个Python脚本自动下载壁纸
jvm·数据库·python
多多*20 小时前
2月3日面试题整理 字节跳动后端开发相关
android·java·开发语言·网络·jvm·adb·c#
m0_5811241921 小时前
Python日志记录(Logging)最佳实践
jvm·数据库·python
naruto_lnq21 小时前
如何为开源Python项目做贡献?
jvm·数据库·python