JVM调试命令与调试工具详解

 更新时间:2023年10月18日 10:20:01   作者:Doker 多克 技术人的数码品牌  
JVM statistics Monitoring,用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,这篇文章主要介绍了JVM调试命令与调试工具,需要的朋友可以参考下

一、JDK自带命令

  Sun JDK监控和故障处理命令如:

1、jps

  JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。

jsp命令格式:

jps [ options ] [ hostid ]
扩展参数:jps -l;jps -mlv;

各参数说明如下:

2、jstat(FullGC频繁解决方案)

  JVM statistics Monitoring,用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。

jstat命令格式:

jstat [ option vmid [interval[s|ms] [count]] ]
jstat -gc pid 1000 10
查看当前pid使用jvm堆栈空间的内存使用情况,每1000豪秒,共打印10次
jstat -gcutil pid 1000 10 内存百分比

3、jmap

  JVM Memory Map,用于生成heap dump文件。

jmap命令格式:

jmap [ option ] vmid

4、jhat

  JVM Heap Analysis Tool,与jmap搭配使用,用来分析jmap生成的dump,该命令解析 Java 堆转储文件并启动 Web 服务器,生成dump的分析结果后,可以在浏览器中查看。

 使用案例:

1. 导出dump信息到a.bin文件

2. 启动jhat进行分析文件

5、jstack(cpu占用高解决方案)

 用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈集合,生成线程快照的目的通常是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间挂起等,都是导致线程长时间停顿的常见原因。

jstack命令格式:

jstack [ option ] vimd

6、jinfo

  JVM Configuration info,用于实时查看和调整虚拟机运行参数。

jinfo命令格式:

主要介绍-flag参数,如果想查看一个已经运行的java程序的虚拟机参数值

jinfo [ option ] pid
$ jinfo -flag MaxMetaspaceSize 962
-XX:MaxMetaspaceSize=18446744073709547520

二、JDK的可视化工具JConsole

1、JConsole

JConsole(Java Monitoring and Management Console)是一种基JMX(Java Management Extensions,即Java管理扩展)的可视化监视、管理工具。

  通过JDK/bin目录下的“jconsole.exe”启动JConsole后,将自动搜索出本机运行的所有虚拟机进程。

2、VisualVM

VisualVM是更常用的可视化监控工具,它本身还具有插件扩展功能,因此功能非常强大,目前使用非常多。

需要先说明的是一些安装上的问题,虽然安装好jdk之后是会有一个VisualVM的程序在jdk的bin目录下,但是不建议使用jdk提供的这个,建议直接去官网下载最新的版本使用。

下载:

VisualVM: Download

插件下载:

VisualVM: Plugins Centers

到此这篇关于JVM调试命令与调试工具的文章就介绍到这了,更多相关JVM调试命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java包装类原理与用法实例分析

    Java包装类原理与用法实例分析

    这篇文章主要介绍了Java包装类,结合实例形式分析了Java包装类基本概念、功能、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • 一文详解Java中枚举类的使用

    一文详解Java中枚举类的使用

    这篇文章主要介绍了深入浅出讲解Java中的枚举类,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,感兴趣的朋友可以了解下
    2022-11-11
  • 配置化Feign接口动态切换URL方式

    配置化Feign接口动态切换URL方式

    本文介绍了在开发、测试和生产环境中使用Feign接口时,根据不同的环境动态切换调用URL的方法,通过在不同环境的配置文件中配置URL,并实现一个Feign拦截器来读取这些配置,从而实现URL的动态切换,这种方法避免了引入过多步骤,同时也保证了不同环境下的URL正确调用
    2024-11-11
  • Java 基础 byte[]与各种数据类型互相转换的简单示例

    Java 基础 byte[]与各种数据类型互相转换的简单示例

    这篇文章主要介绍了Java 基础 byte[]与各种数据类型互相转换的简单示例的相关资料,这里对byte[]类型对long,int,double,float,short,cahr,object,string类型相互转换的实例,需要的朋友可以参考下
    2017-01-01
  • 浅谈Java中的克隆close()和赋值引用的区别

    浅谈Java中的克隆close()和赋值引用的区别

    下面小编就为大家带来一篇浅谈Java中的克隆close()和赋值引用的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • java 使用JDBC构建简单的数据访问层实例详解

    java 使用JDBC构建简单的数据访问层实例详解

    以下是如何使用JDBC构建一个数据访问层,包括数据转换(将从数据库中查询的数据封装到对应的对象中……),数据库的建立,以及如何连接到数据库,需要的朋友可以参考下
    2016-11-11
  • 浅谈几种Java自定义异常处理方式

    浅谈几种Java自定义异常处理方式

    在Java中,异常是一种常见的处理机制,本文主要介绍了浅谈几种Java自定义异常处理方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Java中PrintWriter使用方法介绍

    Java中PrintWriter使用方法介绍

    这篇文章主要介绍了Java中PrintWriter使用方法介绍,文章围绕主题展开PrintWriter使用方法的详细介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-06-06
  • Spring Cloud Eureka 搭建 & 集群方式

    Spring Cloud Eureka 搭建 & 集群方式

    这篇文章主要介绍了Spring Cloud Eureka 搭建 & 集群方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java的带GUI界面猜数字游戏的实现示例

    Java的带GUI界面猜数字游戏的实现示例

    这篇文章主要介绍了Java的带GUI界面猜数字游戏的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12

最新评论