性能调优篇 二、Jvm监控及诊断工具-命令行篇
目录
- 一、概述
- 1、简单命令行工具
- `二、jps:查看正在运行的Java程序(掌握)`
- 1、是什么?
- 2、测试
- 3、基本语法
- `三、jstat:查看jvm统计信息(掌握)`
- 1、是什么?
- 2、基本语法
- 3、补充
- 四、jinfo:实时查看和修改JVM配置参数
- 1、是什么?
- 2、基本语法
- 3、拓展
- 五、jmap:导出内存映像文件 & 内存使用情况
- 1、是什么?
- 2、基本语法
- 3、使用
- 1)`导出内存映像文件`
- 2、显示堆内存相关信息
- 4、小结
- 六、jhat (不使用了)
- 1、是什么?
- 2、基本语法
- 七、jstack 打印Jvm的线程快照
- 1、是什么
- 2、基本语法
- 八、jcmd 多功能命令行
- 九、jstatd 远程主机信息收集
一、概述
性能诊断是软件工程师在日程生活中需要经常面对和解决的问题
Java作为最流行的编程语言之一,其应用性能诊断一直收到业内广泛关注。造成Java应用出现性能问题的因素非常多,例如线程控制,磁盘读写,数据库访问,网络io,垃圾收集等。想要定位这些问题,一款优秀的性能诊断工具必不可少。
1、简单命令行工具
jdk的bin目录下,有一系列的辅助命令行工具,这些辅助工具用来获取 Jvm不同方面,不同层次的信息,帮助开发人员很好的解决Java应用程序的一些疑难杂症。例如 jinfo 、jconsole、javap …
二、jps:查看正在运行的Java程序(掌握)
1、是什么?
Java Process Status:用于查询正在运行的Java虚拟机进程
2、测试
3、基本语法
1)options
如何将信息输出到同级文件中:
语法:命令 > 文件名称
例如:jps -l > a.txt
三、jstat:查看jvm统计信息(掌握)
1、是什么?
jstat (JVM statistics Monitor tool ): 用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据
在没有GUI的图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期间定位虚拟机性能问题的首选工具,常用于检测垃圾回收问题以及内存泄漏问题
2、基本语法
基本语法: 使用jstat查看语法格式
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
其中vmid是进程id号,也就是jps之后看到的前面的号码,如下:
1)options参数
-
-gc
其中S0C代表幸存者0区的总容量,
S1C代表幸存者1区的总容量,
S0U代表幸存者0区使用的容量,
S1U代表幸存者1区使用的容量,
EC代表伊甸园区的总容量,
EU代表伊甸园区使用的总容量,
OC代表老年代的总容量,
OU代表老年代已经使用的容量,
MC代表方法区的总容量,
MU代表方法区的总容量,
CCSC代表压缩类的总容量,
CCSU代表压缩类使用的容量,
YGC代表年轻代垃圾回收的次数,
YGCT年轻代进行垃圾回收需要的时间,
FGC代表代表Full GC的次数,
FGCT代表Full GC的时间,
GCT代表垃圾回收的总时间 -
-gccapacity举例:jstat -gccapacity 13152,其中13152代表类的进程id,执行结果如下:
其中S0C代表幸存者0区的容量,
S1C代表幸存者1区的容量,
EC代表伊甸园区的容量,
CCSC代表压缩类的容量,
YGC代表年轻代垃圾回收的时间,
FGC代表Full
GC垃圾回收的时间
- gcutil举例:jstat -gcutil 13152,其中13152代表类的进程id,执行结果如下所示:
以上是各区域占比以及垃圾回收的情况,
S0代表幸存者0区,
S1代表幸存者1区,
E代表伊甸园区,
O代表老年代,
M代表方法区,
CCS代表压缩类,以上这些值都是占比情况,
YGC代表年轻代垃圾回收的次数,
YGCT年轻代进行垃圾回收需要的时间,
FGC代表代表Full GC的次数,
FGCT代表Full GC的时间,
GCT代表垃圾回收的总时间
2)-t 参数
可以在输出信息前加上一个 TimeStamp列,显示程序的运行时间。单位秒
【经验】
jstat -gc -t 35812 1000
如果让左边框框中的某两个值相减,假设这个值是num1,然后让对应右边框框中的另外两个值相减,假设这个值是num2,之后让num2/num1,得出的差值就是上述所说的GC时间占运行时间的比例
3)-h
可以在周期性数据输出时,输出多少行数据后输出一个表头信息
4)interval 参数
用于指定输出统计数据的周期,单位为毫秒秒(查询间隔)
5)count 参数
用于指定查询的总次数
3、补充
四、jinfo:实时查看和修改JVM配置参数
1、是什么?
2、基本语法
查看
jinfo -flags 进程id
查看曾经赋过值的一些参数
jinfo -flag 参数名称 进程id
查看某个java进程的具体参数信息
修改
针对boolean类型:jinfo -flag [+|-]参数名称 进程id
针对非boolean类型: jinfo -flag 参数名称=参数值 进程id
3、拓展
java -XX:+PrintFlagsInitial 查看所有JVM参数启动的初始值
java -XX:+PrintFlagsFinal 查看所有JVM参数的最终值
五、jmap:导出内存映像文件 & 内存使用情况
1、是什么?
2、基本语法
使用语法可以通过在DOS窗口中使用jmap/jmap -h/jmap -help查看
<executable 代表可执行的代码,比如使用> 文件名称来指定生成的dump文件的生成位置
[server_id@]<……>是为远程连接准备的
3、使用
1)导出内存映像文件
手动
jmap -dump:format=b,file=xxx.hprof pidjmap -dump:live,format=b,file=xxx.hprof pid 【基本使用这个】
自动
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=xxx.hprof
2、显示堆内存相关信息
jmap -heap 进程id
jmap -histo 进程id
4、小结
六、jhat (不使用了)
1、是什么?
2、基本语法
七、jstack 打印Jvm的线程快照
1、是什么
2、基本语法
参数:option:
八、jcmd 多功能命令行
九、jstatd 远程主机信息收集
demo:
https://blog.csdn.net/huanqingdong/article/details/104095402/
相关文章:

性能调优篇 二、Jvm监控及诊断工具-命令行篇
目录 一、概述1、简单命令行工具 二、jps:查看正在运行的Java程序(掌握)1、是什么?2、测试3、基本语法 三、jstat:查看jvm统计信息(掌握)1、是什么?2、基本语法3、补充 四、jinfo&am…...

Fooocus启动时modules报错的解决方法
原理:是由于其他程序的安装导致modules的版本不对,先卸载现有版本,再运行run.bat让其自动安装响应的modules版本。 1、cmd运行windows dos终端。 2、将Fooocus_win64_1-1-1035文件夹备份,rename为Fooocus_win64_1-1-1035backup文…...

RSA私钥解密操作
RSA私钥解密操作 一、背景二、操作三、常见问题3.1 invalid key format3.2 解密的数据太长3.3 Decryption error 一、背景 项目数据库中存放的敏感字段已使用rsa加密的方式,将内容加密成密文存放, 现在需要在使用的时候,使用私钥进行解密。 二、操作 …...
数据库基本知识
基本概念 数据 描述事物的符号记录称为数据,数字,文字,图形,图像,声音,档案记录等都是数据 数据是以“记录”的形式按照统一的格式进行存储的,而不是杂乱无章的 相同格式和类型的数据统一存…...
使用Redis统计网站的UV/DAU
HyperLogLog/BitMap 统计UV、DAU需要用到Redis的高级数据类型 M public class RedisKeyUtil {private static final String PREFIX_UV "uv";private static final String PREFIX_DAU "dau";// a single days UVpublic static String getUVKey(String …...
【python】报错:ImportError: DLL load failed: 找不到指定的模块 的详细解决办法
原因:安装的包与python版本不一致 解决方法: 查看python版本: #python / #python -V Python 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:58:18) [MSC v.1900 64 bit (AMD64)] on win32只查看python第三方模块(库、包&…...

SemrushBot蜘蛛爬虫屏蔽方式
查看访问日志时候发现有SemrushBot爬虫 屏蔽方法: 使用robots.txt文件是一种标准的协议,用于告诉搜索引擎哪些页面可以和不能被爬取,如想禁止Googlebot爬取整个网站的话,可以在该文件中添加以下内容: User-agent: Googlebot Disallow: / 对于遵循robots协议的蜘蛛…...
6 ssh面密登录
1. 首先进入自己的家目录,执行命令 [atguiguhadoop102 .ssh]$ ssh-keygen -t rsa然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥) 2. 将公钥拷贝到要免密登录的…...

基于微信小程序的汽车租赁系统的设计与实现ljx7y
汽车租赁系统,主要包括管理员、用户二个权限角色,对于用户角色不同,所使用的功能模块相应不同。本文从管理员、用户的功能要求出发,汽车租赁系统系统中的功能模块主要是实现管理员后端;首页、个人中心、汽车品牌管理、…...

优化学习体验的在线考试系统
随着互联网的发展,在线教育逐渐成为学习的主要方式之一。在线考试系统作为在线教育的重要组成部分,对于学习者提供了更为便捷和灵活的学习方式。但是,如何优化学习体验,提高学习效果,仍然是在线考试系统需要解决的问题…...

1267. 统计参与通信的服务器
题目描述: 这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有。 如果两台服务器位于同一行或者同一列,我们就认为它们之间可以进行通信。 请你统计并返回能…...

【考研数学】矩阵、向量与线性方程组解的关系梳理与讨论
文章目录 引言一、回顾二、梳理齐次线性方程组非齐次线性方程组 写在最后 引言 两个原因让我想写这篇文章,一是做矩阵题目的时候就发现这三货经常绑在一起,让人想去探寻其中奥秘;另一就是今天学了向量组的秩,让我想起来了之前遗留…...

打造个人的NAS云存储-通过Nextcloud搭建私有云盘实现公网远程访问
文章目录 摘要1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 摘要 Nextcloud,它是ownCloud的一个分支,是一个文件共享服…...

FFI绕过disable_functions
文章目录 FFI绕过disable_functions[RCTF 2019]NextphpPHP7.4 FFI参考 FFI绕过disable_functions [RCTF 2019]Nextphp 首先来看这道题目 index.php <?php if (isset($_GET[a])) {eval($_GET[a]); } else {show_source(__FILE__); }查看一下phpinfo 发现过滤了很多函数&…...

53 个 CSS 特效 2
53 个 CSS 特效 2 这里是第 17 到 32 个,跟上一部分比起来多了两个稍微大一点的首页布局,上篇:53 个 CSS 特效 1,依旧,预览地址在 http://www.goldenaarcher.com/html-css-js-proj/,git 地址: …...

ubuntu学习(六)----文件编程实现cp指令
1 思路 Linux要想复制一份文件通常指令为: cp src.c des.c 其中src.c为源文件,des.c为目标文件。 要想通过文件编程实现cp效果,思路如下 1 首先打开源文件 src.c 2 读src到buf 3 创建des.c 4 将buf写入到des.c 5 close两个文件 2 实现 vi …...

wireshark过滤器的使用
目录 wiresharkwireshark的基本使用wireshark过滤器的区别 抓包案例 wireshark wireshark的基本使用 抓包采用 wireshark,提取特征时,要对 session 进行过滤,找到关键的stream,这里总结了 wireshark 过滤的基本语法,…...
Zookeeper 脑裂问题
什么是脑裂? 脑裂(split-brain)就是“大脑分裂”,也就是本来一个“大脑”被拆分了两个或多个“大脑”,如果一个人有多个大脑,并且相互独立的话,那么会导致人体“手舞足蹈”,“不听使唤”。 脑裂通常会出现…...

计算机网络高频面试题解(一)
1. OSI七层模型 2. TCP/IP五层模型 3. TCP、UDP区别 4. TCP三次握手 5. TCP四次挥手 6. TCP状态转换图 7.TCP状态中TIME_WAIT作用 8. TCP连接建立为什么不是两次握手 9. TCP第三次握手失败会出现什么 10. TCP长连接和短链接及优缺点...
从0-1的docker镜像服务构建
文章目录 摘要一、环境准备1、docker安装2、docker-compose安装 二、镜像制作2.1、编写Dockerfile文件2.1.1、熟悉常用Dockerfile命令2.1.2、制作php镜像案例 2.2、build镜像 三、docker-compose管理容器3.1、编写docker-compose.ymal配置文件3.2、编写systemctl配置 摘要 由于…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...

【51单片机】4. 模块化编程与LCD1602Debug
1. 什么是模块化编程 传统编程会将所有函数放在main.c中,如果使用的模块多,一个文件内会有很多代码,不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数声明,其他.c文…...

RabbitMQ 各类交换机
为什么要用交换机? 交换机用来路由消息。如果直发队列,这个消息就被处理消失了,那别的队列也需要这个消息怎么办?那就要用到交换机 交换机类型 1,fanout:广播 特点 广播所有消息:将消息…...
linux设备重启后时间与网络时间不同步怎么解决?
linux设备重启后时间与网络时间不同步怎么解决? 设备只要一重启,时间又错了/偏了,明明刚刚对时还是对的! 这在物联网、嵌入式开发环境特别常见,尤其是开发板、树莓派、rk3588 这类设备。 解决方法: 加硬件…...

SFTrack:面向警务无人机的自适应多目标跟踪算法——突破小尺度高速运动目标的追踪瓶颈
【导读】 本文针对无人机(UAV)视频中目标尺寸小、运动快导致的多目标跟踪难题,提出一种更简单高效的方法。核心创新在于从低置信度检测启动跟踪(贴合无人机场景特性),并改进传统外观匹配算法以关联此类检测…...