JDK自带JVM工具
xsobi 2024-11-24 00:29 1 浏览
1 jdk 自带工具之jstat——虚拟机进程状况工具
使用方式
Usage: jstat -help|-options
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
例子1: 查看gc信息,每 250 秒查询一次,总共查询 20 次
jstat -gc pid 250 20
例子2:
其中 pid 可以通过 jdk 自带工具 jps(直接在命令行执行jps命令即可) 进行查看
jstat -gcutil 70159
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 0.00 87.77 40.26 96.34 94.45 25 0.432 4 0.531 0.963
S0:代表 S0 区域使用占比 0%
S1:代表 S1 区域使用占比 0%
E: 代表 eden 区域使用比例为87.77%
O:代表老年代区域使用占比 40.26%
YGC:young GC 发生 25 次
YGCT:年轻代GC总耗时 0.432 秒
FGC:老年代GC总共发生4次
FGCT:老年代GC公共耗时 0.531 秒
GCT:GC 总共耗时 0.963秒
2 jdk自带工具之 jinfo——Java 配置信息工具
使用方式
Usage:
jinfo [option] <pid>
(to connect to running process)
jinfo [option] <executable <core>
(to connect to a core file)
jinfo [option] [server_id@]<remote server IP or hostname>
(to connect to remote debug server)
where <option> is one of:
-flag <name> to print the value of the named VM flag
-flag [+|-]<name> to enable or disable the named VM flag
-flag <name>=<value> to set the named VM flag to the given value
-flags to print VM flags
-sysprops to print Java system properties
<no option> to print both of the above
-h | -help to print this help message
例子:查看指定VM参数值,这里是 CMS 垃圾回收器,占用多少内存会触发整理操作
jinfo -flag CMSInitiatingOccupancyFraction 70159
例子2: 查看VM所有参数
jinfo -flags 70159
3 jdk 自带工具之 jmap——Java 内存映像工具
用来生成堆转储快照(一般称为heapdump或dump文件)。如果不使用jmap命令,
其他比较暴力的方式:
1、(-XX:+HeapDumpOnOutOfMemoryError)
2、-XX:HeapDumpOnCtrlBreak可以使用 ctrl + break 命令让虚拟机生成 dump 文件
3、在 Linux 系统,可以通过 kill -3 命令发送进程退出新号“吓唬”以下虚拟机,也能获取到 dump 文件。
使用方式:
Usage:
jmap [option] <pid>
(to connect to running process)
jmap [option] <executable <core>
(to connect to a core file)
jmap [option] [server_id@]<remote server IP or hostname>
(to connect to remote debug server)
where <option> is one of:
<none> to print same info as Solaris pmap
-heap to print java heap summary
-histo[:live] to print histogram of java object heap; if the "live"
suboption is specified, only count live objects
-clstats to print class loader statistics
-finalizerinfo to print information on objects awaiting finalization
-dump:<dump-options> to dump java heap in hprof binary format
dump-options:
live dump only live objects; if not specified,
all objects in the heap are dumped.
format=b binary format
file=<file> dump heap to <file>
Example: jmap -dump:live,format=b,file=heap.bin <pid>
-F force. Use with -dump:<dump-options> <pid> or -histo
to force a heap dump or histogram when <pid> does not
respond. The "live" suboption is not supported
in this mode.
-h | -help to print this help message
-J<flag> to pass <flag> directly to the runtime system
例子:生成 dump 文件
jmap -dump:format=b,file=eclipse.bin 2500
4 jhat:虚拟机堆转储快照分析工具
一般不用,一个是因为:一般不会在部署应用程序的服务器上直接分析dump,因为分析demp文件是一个耗时而且消耗硬件资源的操作;二是因为jhat的分析功能相对来说比较简陋。一般可以使用 Eclipse Memory Analyzer或者IBM HeapAnalyzer等工具。
如果需要使用,可以参照博客:mac平台下怎么分析java堆hprof文件 https://blog.csdn.net/Prepared/article/details/115589701
5 jstack:Java堆栈跟踪工具
主要是用来生成线程快照,用于分析定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待。
Usage:
jstack [-l] <pid>
(to connect to running process)
jstack -F [-m] [-l] <pid>
(to connect to a hung process)
jstack [-m] [-l] <executable> <core>
(to connect to a core file)
jstack [-m] [-l] [server_id@]<remote server IP or hostname>
(to connect to a remote debug server)
Options:
-F 当正常输出的请求不被响应时,强制输出线程堆栈
-m 如果调用到本地方法的话,可以显示C/C++的堆栈
-l 除堆栈外,显示关于锁的附加信息
-h or -help to print this help message
jdk1.5之后,Thread类提供了 getAllStackTraces() 可以获取虚拟机中所有线程的 StackTraceElement 对象,可以完成大部分jstack功能,可以用这个做一个界面。
6 JConsole: Java 监视与管理控制台
mac系统,直接在控制台执行命令:jconsole 启动相应的界面
选择要监控的进程
查看对应进程的堆、新生代、老年代内存情况
7 VisualVM: 多合一故障处理工具
mac系统,直接在控制台执行命令:jvisualvm 启动相应的界面
优点:
- 到目前为止随JDK发布的功能最强大的运行监控和故障处理程序;
- 除了运行监控、故障处理,还提供性能分析等能力;
- 对应用程序的实际性能的影响很小,可以直接在生产环境中使用。
功能范围:
- 显示虚拟机进程以及进程的配置、环境信息(jps、jinfo);
- 监视应用程序的 CPU、GC、堆、方法区以及线程信息(jstack、jstat);
- dump以及分析堆转储快照(jmap、jhat);
- 方法及的程序运行性能分析,找出调用最多、运行时间最长的方法;
- 离线程序快照:收集程序的运行时配置、线程dump、内存dump等信息建立快照,可将快照发给开发进行Bug反馈;
安装相应的插件,更好的使用该工具。
来个关注,更新不迷路
- 上一篇:5-JVM常用的命令
- 下一篇:「微服务架构」API版本控制最佳实践介绍
相关推荐
- 好用的云函数!后端低代码接口开发,零基础编写API接口
-
前言在开发项目过程中,经常需要用到API接口,实现对数据库的CURD等操作。不管你是专业的PHP开发工程师,还是客户端开发工程师,或者是不懂编程但懂得数据库SQL查询,又或者是完全不太懂技术的人,通过...
- 快速上手:Windows 平台上 cURL 命令的使用方法
-
在工作流程中,为了快速验证API接口有效性,团队成员经常转向直接执行cURL命令的方法。这种做法不仅节省时间,而且促进了团队效率的提升。对于使用Windows系统的用户来说,这里有一套详细...
- 使用 Golang net/http 包:基础入门与实战
-
简介Go的net/http包是构建HTTP服务的核心库,功能强大且易于使用。它提供了基本的HTTP客户端和服务端支持,可以快速构建RESTAPI、Web应用等服务。本文将介绍ne...
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
-
你只需编写简单的云函数,就可以实现自己的业务逻辑,发布后就可以生成自己的接口给客户端调用。果创云支持对云函数进行在线接口编程,进入开放平台我的接口-在线接口编程,设计一个新接口,设计和配置好接口参...
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:iN在之前和大家说过,在iN的家里是没有墙面开关的。...
- window使用curl命令的注意事项 curl命令用法
-
cmd-使用curl命令的注意点前言最近在cmd中使用curl命令来测试restapi,发现有不少问题,这里记录一下。在cmd中使用curl命令的注意事项json不能由单引号包括起来json...
- Linux 系统curl命令使用详解 linuxctrl
-
curl是一个强大的命令行工具,用于在Linux系统中进行数据传输。它支持多种协议,包括HTTP、HTTPS、FTP等,用于下载或上传数据,执行Web请求等。curl命令的常见用法和解...
- Tornado 入门:初学者指南 tornados
-
Tornado是一个功能强大的PythonWeb框架和异步网络库。它最初是为了处理实时Web服务中的数千个同时连接而开发的。它独特的Web服务器和框架功能组合使其成为开发高性能Web...
- PHP Curl的简单使用 php curl formdata
-
本文写给刚入PHP坑不久的新手们,作为工具文档,方便用时查阅。CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我们经常会需要用到cur...
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
-
本章涵盖使用Actix提供静态网页...
- 我给 Apache 顶级项目提了个 Bug apache顶级项目有哪些
-
这篇文章记录了给Apache顶级项目-分库分表中间件ShardingSphere提交Bug的历程。说实话,这是一次比较曲折的Bug跟踪之旅。10月28日,我们在GitHub上提...
- linux文件下载、服务器交互(curl)
-
基础环境curl命令描述...
- curl简单使用 curl sh
-
1.curl--help#查看关键字2.curl-A“(添加user-agent<name>SendUser-Agent<name>toserver)”...
- 常用linux命令:curl 常用linux命令大全
-
//获取网页内容//不加任何选项使用curl时,默认会发送GET请求来获取内容到标准输出$curlhttp://www.baidu.com//输出<!DOCTYPEh...
- 三十七,Web渗透提高班之hack the box在线靶场注册及入门知识
-
一.注册hacktheboxHackTheBox是一个在线平台,允许测试您的渗透技能和代码,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战,并且模拟真实场景,其风格更倾向于CT...
- 一周热门
- 最近发表
-
- 好用的云函数!后端低代码接口开发,零基础编写API接口
- 快速上手:Windows 平台上 cURL 命令的使用方法
- 使用 Golang net/http 包:基础入门与实战
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
- window使用curl命令的注意事项 curl命令用法
- Linux 系统curl命令使用详解 linuxctrl
- Tornado 入门:初学者指南 tornados
- PHP Curl的简单使用 php curl formdata
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- patch补丁 (31)
- strcat (25)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- element style (30)
- dedecms模版 (53)
- vs打不开 (29)
- nmap (30)
- webgl开发 (24)
- parse (24)
- c 视频教程下载 (33)
- paddleocr (28)
- listview排序 (33)
- firebug 使用 (31)
- transactionmanager (30)
- characterencodingfilter (33)
- getmonth (34)
- commandtimeout (30)
- hibernate教程 (31)
- label换行 (33)
- curlpost (31)