JVM—jps、jstat、jinfo、jmap、jstack的使用

JVM—jps、jstat、jinfo、jmap、jstack的使用

jps

jps全称:Java Virtual Machine Process Status Tool

可以查看Java进程,相当于Linux下的ps命令,只不过它只列出Java进程。

jps:列出Jav程序ID和Main函数名称
jps -q:只输出进程ID
jps -m :输出传递给Java进程(主函数)的参数
jps -l:输出主函数的完整路径
jps -v:显示传递给Java虚拟的参数

例如:

jps -l

测试

jstat

jstat全称:JVM Statistics Monitoring Tool
jstat可以查看Java程序运行时相关信息,可以通过它查看运行时堆信息的相关情况。

jstat -<options> [-t] [-h<lines>] <vmid> [<interva1>I count>]]
options:由以下值构成
-class:显示C1assLoader的相关信息
-compiler:显示了JIT编译的相关信息
-gc:显示与GC相关信息
-gccapacity:显示各个代的容量和使用情况
-gccause.显示垃圾收集相关信息〈同-gcutil),同时显示最后一次或当前正在发生的垃圾收集的诱发原因
-gcnew:显示新生代信息 
-gcnewcapacity:显示新生代大小和使用情况
-gcold:显示老年代信息
-gcoldcapacity:显示老年代大小
-gcpermcapacity:显示永久代大小
-gcutil:显示垃圾收集信息

找到进程id

找到进程id

例如:

下面输出的是进程内存区域及GC详细信息

jstat -gc 17351 250 4
# 进程ID 17351 ,采样间隔250ms,采样数4

例子

s0C:年轻代中第一个survivor(幸存区)的容量(单位kb)
s1C:年轻代中第二个survivor(幸存区)的容量(单位kb)
s0u :年轻代中第一个survivor(幸存区)目前已使用空间(单位kb)
s1U :年轻代中第二个survivor(幸存区)目前已使用空间(单位kb)
EC :年轻代中Eden的容量(单位kb)
EU :年轻代中Eden目前己使用空间(单位kb)
oC : old代的容量(单位kb)
ou : old代目前已使用空间(单位kb)
MC: metaspace的容量(单位kb)
MU: metaspace目前已使用空间(单位kb)
ccsc:压缩类空间大小
ccsu:压缩类空间使用大小
YGC :从应用程序启动到采样时年轻代中gc次数
YGCT :从应用程序启动到采样时年轻代中gc所用时间(s)
FGC :从应用程序启动到采样时o1d代(全gc)gc次数
FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)

例子2:

下面输出的是进程内存区域百分百 及 GC详细信息

jstat -gcutil 17351 1s 5
# 进程ID 17351,采样间隔1s,采样数5

截图

s0:年轻代中第一个survivor(幸存区)己使用的占当前容量百分比
s1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
M:metaspace已使用的占当前容量百分比
ccs压缩使用比例
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时o1d代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)

jinfo

jinfo全称Java Configuration Info
jinfo可以用来查看正在运行的Java程序的扩展参数,甚至支持修改运行过程中的部分参数。

jinfo [option] <pid>-flags 打印虚拟机 VM 参数
-flag <name> 打印指定虚拟机 VM 参数
-flag [+|-]<name> 打开或关闭虚拟机参数
-flag <name>=<value> 设置指定虚拟机参数的值

例子如下:

jinfo -flags 17351

截图

jmap

jmap全称Java Memory Map
jmap用来查看堆内存使用状况,一般结合jhat使用。

no option

命令:jmap pid
描述:查看进程的内存映像信息。使用不带选项参数的jmap打印共享对象映射,将会打印目标虚拟机中加载的每个共享对象的
起始地址、映射大小以及共享对象文件的路径全称。

例子

jmap 17351

截图

heap

命令:jmap -heap pid
描述:显示Java堆详细信息:打印堆的摘要信息,包括使用的GC算法、堆配置信息和各内存区域内存使用信息

例子

jmap -heap 17351

截图

histo[:live]

命令:jmap -histo:live pid
描述:显示堆中对象的统计信息:其中包括每个Java类、对象数量、内存大小(单位:字节)、完全限定的类名。打印的虚拟机内部的类名称将会带有一个’*’前缀。如果指定了live子选项,则只计算活动的对象。

例子

jmap -histo:live 17351

截图

clstats

命令:jmap -clstats pid
描述:打印类加载器信息:打印Java堆内存的方法区的类加载器的智能统计信息。对于每个类加载器而言,它的名称、活跃度、
地址、父类加载器、它所加载的类的数量和大小都会被打印。此外,包含的字符串数量和大小也会被打印。

dump:<dump-options>

命令: jmap -dump:format=b,file=heapdump.hprof pid
描述:生成堆转储快照dump文件:以二进制格式转储Java堆到指定文件中。如果指定了live子选项,堆中只有活动的对象会被转
储。浏览heap dump 可以使用jhat 读取生成的文件,也可以使用MAT等堆内存分析工具。
注意:这个命令执行,JVM会将整个heap的信息dump写入到一个文件,heap如果比较大的话,就会导致这个过程比较耗时,并且执
行的过程中为了保证dump的信息是可靠的,所以会暂停应用, 线上系统慎用!

例子

jmap -dump:format=b,file=heapdump.hprof 17351

截图

jhat

jhat全称Java Heap Analysis Tool

jhat 命令会解析Java堆转储文件,并启动一个 web server。然后用浏览器来查看/浏览 dump 出来的 heap二进制文件。
jhat 命令支持预先设计的查询,比如:显示某个类的所有实例。还支持 对象查询语言(OQL)。 OQL有点类似SQL,专门用来
查询堆转储。Java生成堆转储的方式有多种:
1. 使用 jmap -dump 选项可以在JVM运行时获取 dump.
2. 使用 jconsole 选项通过 HotSpotDiagnosticMXBean 从运行时获得堆转储。
3. 在虚拟机启动时如果指定了 -XX:+HeapDumpOnOutOfMemoryError 选项,则抛出 OutOfMemoryError 时,会自动执行堆转
储。

命令为

jhat [ options] heap-dump-file

我们分析,刚才生成的heapdump.hprof文件

# 来到文件所在目录
jhat  ./heapdump.hprof

截图

会暴露一个7000端口;在浏览器查看

截图

jstack

jstack全称Java Stack Trace

jstack是Java虚拟机自带的一种堆栈跟踪工具,用于生成java虚拟机当前时刻的线程快照。

线程快照是当前Java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待、等等。

线程快照里留意下面几种状态

  • 死锁,Deadlock(重点关注)
  • jhat [ options 1 ] heap-dump-file
  • 等待资源,Waiting on condition(重点关注)
  • 等待获取管程,Waiting on monitor entry(重点关注)
  • 阻塞,Blocked(重点关注)
  • 执行中,Runnable
  • 暂停,Suspended
  • 对象等待中,Object.wait() 或 TIMED_WAITING
  • 停止,Parked
jstack [ option ] pid 查看当前时间点,指定进程的dump堆栈信息。
jstack [ option ] pid > 文件 将当前时间点的指定进程的dump堆栈信息,写入到指定文件中。
# 注:若该文件不存在,则会自动生成; 若该文件存在,则会覆盖源文件。
jstack [ option ] executable core 查看当前时间点,core文件的dump堆栈信息。
jstack [ option ] [server_id@]<remote server IP or hostname> 查看当前时间点,远程机器的dump堆栈信息。

可选参数:

-F # 当进程挂起了,此时'jstack [-l] pid'是没有相应的,这时候可使用此参数来强制打印堆栈信息,强制jstack),一般情况不
需要使用。
-m # 打印java和native c/c++框架的所有栈信息。可以打印JVM的堆栈,以及Native的栈帧,一般应用排查不需要使用。
-l # 长列表. 打印关于锁的附加信息。例如属于java.util.concurrent的ownable synchronizers列表,会使得JVM停顿得长久
得多(可能会差很多倍,比如普通的jstack可能几毫秒和一次GC没区别,加了-l 就是近一秒的时间),-l 建议不要用。一般情况不需
要使用。
-h or -hel # 打印帮助信息

jstack pid 打印堆栈

jstack  17351
# 或者输出到文件中查看
jstack 17351 > jvm_stack_info_17351.txt

统计线程数

jstack -l 进程id | grep 'java.lang.Thread.State' | wc -l

例子:

jstack -l 17351 | grep 'java.lang.Thread.State' | wc -l

截图

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

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

相关文章

MATLAB4:数值计算

文章目录 一、实验目的二、实验内容三、仿真结果四、实践中遇到的问题及解决方法 一、实验目的 1. 熟悉根据已知数据进行回归法曲线拟合。   2. 熟悉根据已知数据进行多项式曲线拟合。   3. 熟悉根据已知数据利用指定方法进行数据插值&#xff08;临近插值、线性插值、立方…

小程序视频如何下载到电脑上

小程序视频如何下载到电脑上&#xff0c;很简单 1.利用Fiddler和Charles这些专业的抓包工具 2.利用录屏 3.利用专门抓取资源的工具(集成了抓取下载&#xff0c;而且对资源下载很友好) 工具我已经打包好了 下载高手链接&#xff1a;https://pan.baidu.com/s/1qJ81sNBzzzU0w…

leetcode2924--找到冠军II

1. 题意 给定一个有向无环图&#xff0c;方向表示胜负关系&#xff1b;求最后胜出的人。 2. 题解 将所有人标记为胜者&#xff0c;统计出度去掉对应胜者标记&#xff1b; 最后统计胜者数目&#xff0c;是否大于1&#xff0c;若大于1&#xff0c;则没有胜者&#xff0c;否则…

千云物流 -influxdb了解和应用

简介 InfluxDB Cluster 是一个开源的 时间序列数据库,没有外部依赖。它对于记录指标、事件和执行分析很有用。 InfluxDB Cluster 启发于 InfluxDB Enterprise、InfluxDB v1.8.10 和 InfluxDB v0.11.1,旨在替代 InfluxDB Enterprise。 InfluxDB Cluster 易于维护,可以与上游…

Linux的学习之路:6、Linux编译器-gcc/g++使用

摘要 本文主要是说一些gcc的使用&#xff0c;g和gcc使用一样就没有特殊讲述。 目录 摘要 一、背景知识 二、gcc如何完成 1、预处理(进行宏替换) 2、编译&#xff08;生成汇编&#xff09; 3、汇编&#xff08;生成机器可识别代码 4、链接&#xff08;生成可执行文件或…

【我的代码生成器】生成React页面类

有了数据表的结构信息&#xff0c;就能生成React 的页面类&#xff0c;快捷方便。 生成界面如下&#xff1a; 生成的React FrmUser.js页面如下&#xff1a; 只需再写里面的操作逻辑代码。

银河麒麟之PaddleOCR模型部署

一、PaddleOCR简介 PaddleOCR是一个基于飞桨框架开发的开源OCR工具&#xff0c;提供了一系列强大的文本识别功能。PaddleOCR支持多种文本识别任务&#xff0c;包括文字检测、文字识别、文本方向检测等。它具有高效、准确的特点&#xff0c;适用于多种场景下的文本识别需求&…

Selenium - java - 屏幕截图

文档地址 Selenium 浏览器自动化项目 | Selenium 安装 <dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.19.1</version></dependency>使用 创建WebDriver实例 …

IDP之Backstage - 环境搭建

0. 目录 1. 前言2. 环境准备&#xff08;Windows10下&#xff09;2.1 安装nvm2.2 git和docker安装 3. 创建模板项目3.1 典型错误: fails on the yarn install step3.2 再次启动3.3 验证 4. 相关 1. 前言 本不想写这篇&#xff0c;因为看着官网文档写着挺简单的&#xff0c;但实…

禅道登录/创建版本/编辑版本接口 【禅道版本 20.0.beta2】

登录获取token import requestsurl = "http://192.168.1.234:6061/api.php/v1/tokens" payload = {"account": "jenkins","password": "jenkins123" } headers = {}response = requests.request

UI设计的未来发展

UI 设计的未来发展&#xff0c;实际上是互联网行业未来发展的折射。毕竟&#xff0c;UI 设计始终是互联网行业的一部分&#xff0c;因此在互联网行业未来发展的可能性来看&#xff0c;UI 设计同样会跟随着互联网的部分稳步前进。曾经&#xff0c;在最初的图形化界面出现的时候&…

线上剧本杀小程序发展趋势如何?

随着几年的快速发展&#xff0c;剧本杀行业进入到了大众的视野&#xff0c;不过从2022年开始&#xff0c;行业就开始处于下滑趋势&#xff0c;但是行业反而变得更加的规范化。 经历过下滑发展后&#xff0c;剧本杀行业已经趋向专业化、精品化发展&#xff0c;行业正在复苏&…

高基报表是什么?高校各部门如何快速填报高基表?

高基报表——全称是《高等教育事业基层统计报表》&#xff08;以下简称《高基报表》&#xff09;&#xff0c;作为高等院校基本情况报表的代表&#xff0c;承载着学校办学实力的真实写照。填报高基报表是一项细致入微的工作&#xff0c;不仅关系到学校的科学管理和决策研究&…

第一节:什么是操作系统

什么是操作系统 一、一台计算机的组成部分1、计算机能干啥2、谈谈计算机硬件 二、什么是操作系统三、学习操作系统的层次 一、一台计算机的组成部分 如下图所示&#xff1a; 这就是就是构成一台计算机的组成部分 1、计算机能干啥 ∙ \bullet ∙计算机是我们专业吃饭的家伙&a…

前端知识学习笔记-六(vue)

简介 Vue是前端优秀框架是一套用于构建用户界面的渐进式框架 Vue优点 Vue是目前前端最火的框架之一 Vue是目前企业技术栈中要求的知识点 vue可以提升开发体验 Vue学习难度较低 Vue开发前准备 一、nodejs环境 Nodejs简介 Nodejs诞生于2009年&#xff0c;主攻服务器方向&#x…

Spring Message

EnableJms注解 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(JmsBootstrapConfiguration.class) public @interface EnableJms { } @Import(JmsBootstrapConfiguration.class) @Configuration @Role(BeanDefinition.ROLE_INFRASTRUC…

数据结构OJ题——栈和队列

1. 用栈实现队列&#xff08;OJ链接&#xff09; 题目描述&#xff1a;请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09; void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回…

Gateway 基本配置指南:构建高效的网络接入网关

简介&#xff1a; Gateway 是一个常用的网络接入网关&#xff0c;它可以帮助组织实现安全、可靠和高性能的网络连接。本文将介绍 Gateway 的基本配置&#xff0c;帮助读者了解如何正确配置和部署一个高效的 Gateway 网关。 1.网络拓扑规划&#xff1a; 在配置 Gateway 前&#…

锂电池寿命预测 | Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池寿命预测 | Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测 程序设计 完整程序和数据获取方式&#xff1a;私信博主回复Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测。 参考资料 [1] h…

Java/Android 汉字转拼音

Java 汉字转拼音 1.TinyPinyin 功能&#xff1a; 适用于Java和Android的快速、低内存占用的汉字转拼音库。 特性&#xff1a; 生成的拼音不包含声调&#xff0c;均为大写&#xff1b;支持自定义词典&#xff0c;支持简体中文、繁体中文&#xff1b;执行效率很高(Pinyin4J的…