当前位置: 首页 > news >正文

jvm问题自查思路

本文聊一下最近处理了一些jvm的问题上,将这个排查和学习过程分享一下,看了很多资料,最终都会落地到几个工具的使用,本文主要是从文档学习、工具学习和第三方技术验证来打开认知和实践,希望有用。

一、文档

不仅知道了《深入理解java虚拟机第三版》,也知道了下面这几本书(从秦金伟老师那得知)

《深入java虚拟机》、《深入解析java虚拟机HpstPot》、《垃圾回收的算法和实现》,都是进阶的好书。

更深入jvm问题,查类似 R大 相关jvm开发者相关文档

[资料合集] RednaxelaFX写的文章/回答的导航帖(work in progress) - 知乎

二、实践验证

1、通过VisualVM在本地启动观察本地jvm情况

主要看这几篇文章

VisualVM: Home

https://www.cnblogs.com/avivaye/p/10515259.html

本地idea配置start.sh中的jvm参数:idea中设置JVM参数的两种方式_idea设置jvm参数-CSDN博客

2、配置gc日志参数,在GCViewer或者gceasy上观察gclog分析

GitHub - chewiebug/GCViewer: Fork of tagtraum industries' GCViewer. Tagtraum stopped development in 2008, I aim to improve support for Sun's / Oracle's java 1.6+ garbage collector logs (including G1 collector)

Universal JVM GC analyzer - Java Garbage collection log analysis made easy

3、通过mat软件dump出oom文件

Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation或者

MAT(Memory Analyzer Tool)工具使用超详细版-CSDN博客

4、jvm参数官网查询验证

在不确定的情况下可以在此次查参数验证

Java HotSpot VM Options

三、第三方网站傻瓜式操作

当情况紧急但是自己又不知道怎样设置的时候,可以搜一个jvm调优大佬寒泉子做的一家公司的网站:HeapDump - 产品控制台,

1、注册网站

在这个网站上选择自己的自己想使用的功能,可以使用的功能共有三个:java虚拟机参数分析、java现场dump分析、jjava内存dump文件分析,下面我介绍下自己使用最多的java虚拟机参数分析,

2、测试功能

点击XXFox上的立即使用,我们可以看到参数查询、参数检查、参数变迁、参数优化、参数生成几个入口,

假设我们遇到知道机器配置的,但是不知道怎样设置合理的jvm参数,我们可以点击参数生成按钮,进去后,可以看到,我们需要输入自己的CPU核数,物理内存,操作系统,位数,jdk版本,选择好之后,最简化的方法,

我们点击右下角的生成参数,然后就可以看到生成了参数

3、验证参数

点击复制按钮,就可以将参数复制出来放到自己的启动脚本中,放置方法见上面

二、实践验证

1、在idea安装插件VisualVM可以在本地启动观察本地jvm情况

章节的博文,然后在安装好的visualvm上观察参数表现

-Xmx5440M -Xms5440M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+ParallelRefProcEnabled

当然你也可以自己的情况多生成一些参数,例如我把最后一排全部选择好了,然后可以看到生成的参数多了一些

有时我们会遇到已经有了参数,但是不知道是否合理,就可以使用参数查询的功能,点击下图中的随意一个参数查询,之后将参数输入进去,就会在下方得到一些建议,超级方便,更多功能大家也可以在这个网址下进行查看:Java虚拟机参数分析 - PerfMa (heapdump.cn) 。

http://www.lryc.cn/news/299435.html

相关文章:

  • 任意IOS16系统iPad/Iphone开启台前调度
  • LeetCode、452. 用最少数量的箭引爆气球【中等,贪心,区间问题】
  • 洛谷C++简单题小练习day10—umi的函数
  • 【Linux学习】线程互斥与同步
  • 前端开发:(三)CSS入门
  • 一周学会Django5 Python Web开发-Django5创建项目(用PyCharm工具)
  • 寒假学习记录13:JS对象
  • 学生成绩管理系统|基于Springboot的学生成绩管理系统设计与实现(源码+数据库+文档)
  • C#向数组指定索引位置插入新的元素值:自定义插入方法 vs List<T>.Add(T) 方法
  • 【大数据Hive】hive 表设计常用优化策略
  • jvm垃圾收集器之七种武器
  • STM32面试相关问题
  • 风行智能电视N39S、N40 强制刷机升级方法,附刷机升级数据MstarUpgrade.bin
  • 【C语言】简易英语词典
  • 【算法题】104. 二叉树的最大深度
  • Docker配置Portainer容器管理界面
  • Linux network namespace 访问外网以及多命名空间通信(经典容器组网 veth pair + bridge 模式认知)
  • 网络渗透测试:Wireshark抓取qq图片
  • 网络协议与攻击模拟_16HTTP协议
  • 叙事弧基础
  • python从入门到精通(二十):python的exe程序打包制作
  • three.js 细一万倍教程 从入门到精通(一)
  • 电路设计(16)——纪念馆游客进出自动计数显示器proteus仿真
  • Python数学建模之回归分析
  • 单片机学习笔记---DS18B20温度传感器
  • 【网络】WireShark过滤 | WireShark实现TCP三次握手和四次挥手
  • 开源免费的Linux服务器管理面板分享
  • leetcode算法-位运算
  • 「MySQL」约束
  • C语言:详解操作符(下)