JVM-常用工具(jps、jstat、jinfo、jmap、jhat、jstack、jconsole、jvisualvm)使用

news2024/11/25 2:39:06

场景

记录JVM中常用工具。

jps:虚拟机进程状态工具

jps(JVM Process Status Tool):虚拟机进程状态工具,可以列出正在运行的虚拟机进程,

并显示虚拟机执行主类(Main Class,main()函数所在的类)的名称,以及这些进程的本地虚拟机的唯一ID。

命令格式:

jps [options] [hostid]

示例:

jps -l

 

选项:

-q 只输出LVMID,省略主类的名称
-m 输出虚拟机进程启动时传递给main()函数的参数
-l 输出主类的全名,如果进程执行的是jar包,输出jar路径
-v 输出虚拟机进程启动时JVM参数

jstat:虚拟机统计信息监控工具

用于监控虚拟机各种运行状态信息的命令行工具。

它可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,

它是运行期定位虚拟机性能问题的首选工具。

语法:

jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

示例:

jstat -gcutil 27024 5000 10

以上代表5000毫秒执行一次,一共执行10次,查看id为27024的gcutil对应选项的信息。

 

选项:

-class 监视类装载、卸载数量、中空间及类装载所耗费的时间
-gc 监视Java堆状况,包括Eden区、2个Survivor区、老年代、永久代等容量、已用空间、GC合计时间等信息
-gccapacity 监视内容与-gc基本相同,但输出主要关注java堆各区域使用到的最大和最小空间
-gcutil 监控内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
-gccause 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因
-gcnew 监视新生代GC的状况
-gcnewcapacity 监视内容与-gcnew基本相同,输出主要关注使用到的最大和最小空间
-gcold 监视老年代GC的状况
-gcoldcapacity 监视内容与-gcold基本相同,输出主要关注使用到的最大和最小空间
-gcpermcapacity 输出永久代使用到的最大和最小空间
-compiler 输出JIT编译器编译过的方法、耗时等信息
-printcompilation 输出已被JIT编译的方法

jinfo:jvm配置信息工具

jinfo(Configuration Info for Java)的作用是实时地查看和调整虚拟机的各项参数。

使用jps -v 可以查看虚拟机启动时显示指定的参数列表,但是如果想知道未被显示指定的参数的系统默认值,

除了去找资料外,就只能使用jinfo的-flag选项进行查询了。

命令格式:

jinfo [options] pid

选项:

-flags:查看JVM运行时环境参数;
-sysprops:查看JVM系统属性;
-classloader:查看JVM中已加载的类加载器信息;
-jvmflags:查看JVM启动时的参数;
-heap:查看JVM堆内存信息;
啥也不加:查看以上所有

示例:

 

jmap:java内存映射工具

jdk安装后会自带一些小工具,jmap命令(Memory Map for Java)是其中之一。

主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。

jmap命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,

检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等。

格式:

jmap [option] pid

选项:

-dump 生成java堆转储快照,格式为:-dump:[live,]format=b,file=<filename>,其中live子参数说明是否只dump出存活对象
-finalizerinfo 显示在F-Queue中等待Finalizer线程执行finalize方法的对象,只在linux/solaris平台下有效
-heap 显示堆详细信息,如使用哪种回收期、参数配置、分带状况等,只在linux/solaris平台下有效
-histo 显示堆中对象统计信息,包括类、实例数量和合计容量
-permstat 以ClassLoader为统计口径显示永久代内存状况,只在linux/solaris平台下有效
-F 当虚拟机进程对-dump选项没有响应时,可以使用这个选项强制生成dump快照,只在linux/solaris平台下有效

示例:

 

jhat:虚拟机堆转储快照分析工具

jhat也是jdk内置的工具之一。主要是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,

包括对象的数量,大小等等,并支持对象查询语言。

使用jmap等方法生成java的堆文件后,使用其进行分析。

使用jmap生成java的堆文件

jmap-dump:format=b,file=D:/1.hprof 27024

然后分析堆文件

jhat D:/1.hprof

 

成功后访问7000端口

 

jstack:java堆栈跟踪工具

jstack是java虚拟机自带的一种堆栈跟踪工具。jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,
如果是在64位机器上,需要指定选项”-J-d64”,Windows的jstack使用方式只支持以下的这种方式:

jstack [-l] pid

主要分为两个功能:
针对活着的进程做本地的或远程的线程dump
针对core文件做线程dump

jstack用于生成java虚拟机当前时刻的线程快照。
线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,
如线程间死锁、死循环、请求外部资源导致的长时间等待等。
线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。
如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,
从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。
另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息,
 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

jstack命令主要用来查看Java线程的调用堆栈的,可以用来分析线程问题(如死锁)。

基本参数:

-F 当’jstack [-l] pid’没有响应的时候,强制打印线程堆栈信息,一般情况不需要使用
-l 长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表,会使得JVM停顿得长久得多(可能会差很多倍,比如普通的jstack可能几毫秒和一次GC没区别,加了-l 就是近一秒的时间),-l 建议不要用,一般情况不需要使用
-m 打印java和native c/c++框架的所有栈信息.可以打印JVM的堆栈,显示上Native的栈帧,一般应用排查不需要使用
-h | -help打印帮助信息
pid 需要被打印配置信息的java进程id,可以用jps查询

示例:

jstack -l 27024

 

jconsole:Java监视与管理控制台

JConsole(java monitoring and management console)是一款基于JMX的可视化监视和管理工具。

使用:

点击JDK/bin 目录下面的“jconsole.exe”即可启动
然后会自动自动搜索本机运行的所有虚拟机进程
选择其中一个进程可开始进行监控

具体流程可参考下文

Java中数据同步-synchronized关键字与Mointor的使用:

Java中数据同步-synchronized关键字与Mointor(jconsole)的使用_@taskexceptionmointor_霸道流氓气质的博客-CSDN博客

jvisualvm:Java多合一故障处理工具

VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,

对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、

执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。本文主要介绍如何使用 VisualVM 进行性能分析及调优。

VisualVM位于{JAVA_HOME}/bin目录中。

点击jvisualvm.exe启动

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/596469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Mininet】安装篇:安装Mininet

大家好&#xff0c;我是皮皮猫吖&#xff01; 每文一言&#xff1a;改变你的生活&#xff0c;现在或者从不 本篇文章&#xff1a; 本文是安装 mininet 的简单过程。 正文如下&#xff1a; 一、Mininet的安装 第一步&#xff1a;安装git apt install git 第二步&#xff…

element-ui配置按需引入和全局引入

镇楼图 按需引入 安装element-plus cnpm install element-plus --save 安装按需导入 cnpm install -D unplugin-vue-components unplugin-auto-import修改vite.config.js配置按需加载 import AutoImport from unplugin-auto-import/viteimport Components from unplugin-vue-…

30天从入门到精通TensorFlow1.x第一天,如何创建张量

文章目录 一、TensorFlow基本概念1. 什么是TensorFlow2. TensorFlow的组成3. TensorFlow的三个重要模型 二、TensorFlow的重要底层库1. 先简单来个 helloWord2. 张量什么是张量如何创建张量创建张量&#xff08;1&#xff09;. 通过定义常量来进行创建张量&#xff08;2&#x…

Java学习笔记21——常用API

常用API 常用APIMath类Math的常用方法 System类System类常用方法 Object类Object类常用方法 Arrays类Arrays常用方法 基本类型包装类Integer类的概述和使用int和String的相互转换自动装箱和拆箱 日期类Date类Date类的常用方法 SimpleDateFormat类SimpleDateFormat的构造方法Sim…

【计算机网络实验】静态路由协议和RIP协议仿真实验

实验内容  静态路由协议和RIP协议仿真实验 实验目的 1 路由器及路由协议基础知识 2 静态路由配置实验 &#xff08;1&#xff09;掌握静态路由和RIP的配置方法&#xff1b; &#xff08;2&#xff09;掌握通过静态路由和RIP方式实现网络的连通性&#xff1b; &#xff08;3…

什么是品牌推广?品牌推广的基本概念及注意要点

品牌推广是企业进行营销活动的关键之一&#xff0c;而现代市场竞争激烈&#xff0c;如何进行有效的品牌推广也成为企业最为关心的问题之一。本文将为大家介绍品牌推广的基本概念、策略以及注意事项。 一、品牌推广的基本概念 品牌推广是指企业通过多种手段&#xff0c;以宣传产…

电脑软件:键盘按键修改器——keytweak使用介绍

对你的电脑键盘的布局不满意、键盘上的某个按键坏掉了等等键盘问题如何解决&#xff1f;有了KeyTweak这一切就可以轻松解决了&#xff0c;KeyTweak是一个免费软件程序&#xff0c;使用它可让你重新映射键盘键。如果您改变主意并想将其改回原样&#xff0c;只需点击一下即可容易…

如何拍摄家具

产品可视化在几乎所有企业中都至关重要&#xff0c;尤其是电子商务&#xff0c;93%的消费者认为视觉外观是购买决策的关键因素。对于家具公司也是一样的。这是您在市场上建立知名度、吸引潜在客户并让他们购买的方式之一。更不用说如今&#xff0c;客户的要求比以往任何时候都高…

Spring Boot中使用WebSocket

文章目录 为什么要用WebSocket&#xff1f;WebSocket的握手阶段Spring Boot中使用WebSocket添加WebSocket依赖服务器代码编写WebSocketSession如何获取用户信息&#xff1f;创建管理类管理用户与会话客户端代码 为什么要用WebSocket&#xff1f; 我们往往需要一些这样的场景&a…

BGP状态机

BGP协议基本概念 BGP是一种外部网管协议(EGP),与OSPF、RIP等内部网管协议(IGP)不同,其着眼点不在于自动发现网络拓扑,而在于AS之间选择最佳路由和控制路由的传播。 自治系统AS( Autonomous System) 由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。 …

使用select实现TCP并发服务器模型

文章目录 前言一、select是什么&#xff1f;1.1 高级IO模型1.2 select实现1.3 select缺点: 二、使用select实现TCP并发服务器模型1.引入库2.TCP服务器端3. TCP服务器端3. 运行结果 总结 前言 本期主要分享的是对于select的使用&#xff0c;使用select实现TCP并发服务器模型&am…

JSR-133/Java内存模型(JMM)规范

by Doug Lea, with help from members of the JMM mailing list. 原文地址 The JSR-133 Cookbook for Compiler Writers 重排序(Reorderings)Volatiles and MonitorsFinal Fields 内存屏障(Memory Barrires)屏障类别数据依赖和屏障之间的关系原子指令与屏障之间的相互作用 屏…

总结885

5月小结 数学做了1800基础部分&#xff0c; 英语背了7篇文章 每日必复习&#xff08;5分钟&#xff09; 画思维导图1~15讲 学习内容&#xff1a; 英语&#xff1a;继续 背诵《we stand on the same starting point》 数学&#xff1a;进步本题目&#xff0c;我知道为啥总会…

嵌入式调试技巧-代码自动初始化

代码自动初始化 概述 在嵌入式开发过程中&#xff0c;可能会遇到初始化代码自动初始化&#xff0c;比如RTT中就运用到这项技术。那么初始化代码是如何做到自动化调用的呢&#xff1f; 在嵌入式实际开发过程中&#xff0c;往往需要对 bsp 部分进行外设配置&#xff0c;以及一…

springboot+vue+java在线考试系统 试题库组卷系统

这次开发的精品在线试题库系统有管理员&#xff0c;教师&#xff0c;学生三个角色。管理员功能有个人中心&#xff0c;专业管理&#xff0c;学生管理&#xff0c;教师管理&#xff0c;试卷管理&#xff0c;试题管理&#xff0c;考试管理。教师可以管理试题和试卷&#xff0c;查…

基于C#制作一个贪吃蛇小游戏

基于C#制作一个贪吃蛇小游戏,简单耐玩,操作简单。 一、项目创建1.1、创建1.2、素材准备1.3、界面绘制1.4、设置定时器1.5、获取键盘事件1.6、游戏结束事件二、帮助类2.1、坐标DTO2.2、果实DTO2.3、移动DTO结语一、项目创建 1.1、创建 打开Visual Studio,右侧选择创建新项目…

AutoGPT 使用教程及上手体验(一分钟配置可用)

ChatGPT 是新一代 AI 文本助手&#xff0c;可以帮助解决我们在多个领域的问题。 在某些复杂问题上&#xff0c;ChatGPT 需要经过不断的调教与沟通&#xff0c;才能得到接近正确的答案。 当你是某个领域的专家时&#xff0c;你很容易做到这一点。 但是&#xff0c;在你不熟悉…

【Linux】文件的压缩和解压

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、压缩格式 2、压缩软件 3、tar 命令简介 4、tar 命令压缩 5、总结 1、压缩格式 在市面上有非常多的压缩格式&#xff0c;…

蓝牙技术|苹果Apple Watch新专利,可监测用户更多健康指标

根据美国商标和专利局&#xff08;USPTO&#xff09;近日公示的清单&#xff0c;苹果获得了一项 Apple Watch 相关的专利&#xff0c;可以在表带嵌入 NFC、RFID 和蓝牙等组件&#xff0c;从而实现某些特定功能。 在苹果的构想中&#xff0c;未来的 Apple Watch 可以“识别”表…

BR 5AP920.1505-01 模拟电阻式触摸屏

材料编号: 5AP920.1505-01 描述: 15英寸XGA彩色TFT显示屏模拟电阻式触摸屏安装深度小无风扇运行可以用显示链接卡或PPC300升级 自动化面板AP920&#xff0c;15英寸XGA彩色TFT显示屏&#xff0c;带触摸屏(电阻式)&#xff0c;3个USB 2.0接口&#xff0c;用于自动化面板链接的…