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

JVM常见排查问题的命令及可视化工具

前置:

RMI协议:java的一个远程调用协议,在不同的JVM之间可以进行接口的调用,但数据不安全,且仅限java;

一、常见命令及用法

1、jps:与Linux的ps命令有点类似,查看系统中在运行的Java程序,并打印main方法所在类名和PID进程号;主要选项参数:

-m:输出启动时传递给main函数的参数

-v:输出启动时JVM的参数

2、jstat:监视运行中的JVM状态信息,包含类加载的信息,内存、垃圾回收、即时编译信息(当使用动态代理时,会在运行过程中实时的产生Class对象);

可以查看本地的,也可以通过RMI协议查看远程的;

在运行中的JVM,没有可视化图形工具的时候常用;

命令格式:

本地:jstat    option    interval      count

如:jstat   -gc   1027    1000    10   表示打印1027那个进程的垃圾回收信息,每1000毫秒打印一次,总共打印10次,省略interval和count表示只打印一次;只省略count表示在间隔时间内一直打印,interval的单位是毫秒;

远程:jstat   option    协议RMI://lvmid @远程机器的hostname:端口/servername

如:jstat   -gc   RMI://1027@192.168.1.1:8080/HelloJVM

主要选项参数:主要包含三大类:类加载、垃圾回收和即时编译情况

-gc:表示打印gc信息

-class:表示打印类加载和卸载,空间和耗时等信息

-gccause:导致上一次GC的原因

-compiler:即时编译过的方法、耗时等;

3、jmap:生成堆转储文件(heapdump或dump文件)

备注:生成堆转储快照也可以通过设置参数的方式进行,比如设置

+XX:HeapDumpOnOutOfMemaryError:在出现内存溢出异常的时候在当前工程目录下,生成堆转储快照,这种是比较暴力的做法,一般在生产环境上不用,因为生成快照是比较耗时的,会影响系统整个运行,一般在测试环境或者压力测试的时候用;

也可以通过+XX:HeapDumPath=path来指定生成堆文件的路径

jmap生成堆转储快照:

jmap  -dump   pid

jmap  -heap  pid:生成堆详细信息,比如垃圾回收器,参数配置等,但只在Linux下有限,Windows下无效;

jmap  -F:当已经发生内存溢出,同时使用jmap  -dump无响应时,使用-F强制生成堆文件

jmap  -histo:统计对象信息,包括类、实例数量等,可以查看哪个对象分配最多导致内存溢出;

4、jstack:生成当前时刻JVM的线程快照,线程快照是指每一条线程正在执行的那个方法的堆栈信息;当某个线程出现长时间卡顿时,需要使用该命令进行定位,比如出现请求外部资源未响应导致一直等待,死循环,深度递归调用,死锁等;

格式:jstack   option   pid

jstack  -F:强制生成线程快照信息

jstack   -l:显示锁的附加信息;

5、jhat:与jmap配合使用,在JVM内部内置了一个微型的web服务器,用来分析jmap转储的堆文件快照,除非在完全依赖线上的环境上,否则一般不使用jhat来分析堆文件,因为功能相对简陋,且加载堆文件比dump堆文件更耗内存,可以下载到本地使用VisualVM可视化工具进行分析;

6、jinfo:查看JVM的一些显示指定和非显示指定的参数,也可以对这些参数进行修改

jinfo   -flag:查询默认的那些参数值

二、JDK自带可视化工具

1、JConsole

2、VisualVM:

对JVM实际性能影响较小,相比于其他可视化工具,它可以使用在生产环境中排查问题;

支持插件安装,可以扩展功能;

3、Mission Control

三、其他第三方可视化工具

1、阿里的Arthas


http://www.kler.cn/a/465864.html

相关文章:

  • 缓存-文章目录
  • 代码随想录算法训练营第二十四天-回溯算法-90. 子集II
  • 旧服务改造及微服务架构演进
  • ESP32自动下载电路分享
  • PTA数据结构作业一
  • 基于Spring Boot的IT技术交流和分享平台的设计与实现源码
  • 以一个实际例子来学习Linux驱动程序开发之“设备类”的相关知识【利用设备类实现对同一设备类下的多个LED灯实现点亮或关闭】
  • 服务器迁移中心——“工作组迁移”使用指南
  • 开源Material Design WPF UI 控件库简单上手
  • 【Python其他生成随机字符串的方法】
  • 《特征工程:自动化浪潮下的坚守与变革》
  • “AI智慧教学系统:开启个性化教育新时代
  • 【QT】增删改查 XML 文件的类
  • 计算机网络•自顶向下方法:链路层介绍
  • Linux性能优化-系列文章-汇总
  • 网络信息安全概述
  • React实现地图找房
  • Windsurf生成测试用例
  • 重新整理机器学习和神经网络框架
  • Golang的容器编排实践
  • 面试高频:一致性hash算法
  • 数据结构考前一天
  • 提示词工程教程:角色提示
  • C++ ——— 构造函数中的初始化列表
  • Linux高并发服务器开发 第八天(makefile的规则 wildcard/patsubst函数 普通变量/自动变量/其他关键字)
  • C# 设计模式(创建型模式):原型模式