当前位置: 首页 > news >正文

性能调优篇 二、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、是什么?

查看所有JVM参数的最终值

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&#xff1a;查看正在运行的Java程序&#xff08;掌握&#xff09;1、是什么&#xff1f;2、测试3、基本语法 三、jstat&#xff1a;查看jvm统计信息&#xff08;掌握&#xff09;1、是什么&#xff1f;2、基本语法3、补充 四、jinfo&am…...

Fooocus启动时modules报错的解决方法

原理&#xff1a;是由于其他程序的安装导致modules的版本不对&#xff0c;先卸载现有版本&#xff0c;再运行run.bat让其自动安装响应的modules版本。 1、cmd运行windows dos终端。 2、将Fooocus_win64_1-1-1035文件夹备份&#xff0c;rename为Fooocus_win64_1-1-1035backup文…...

RSA私钥解密操作

RSA私钥解密操作 一、背景二、操作三、常见问题3.1 invalid key format3.2 解密的数据太长3.3 Decryption error 一、背景 项目数据库中存放的敏感字段已使用rsa加密的方式&#xff0c;将内容加密成密文存放, 现在需要在使用的时候&#xff0c;使用私钥进行解密。 二、操作 …...

数据库基本知识

基本概念 数据 描述事物的符号记录称为数据&#xff0c;数字&#xff0c;文字&#xff0c;图形&#xff0c;图像&#xff0c;声音&#xff0c;档案记录等都是数据 数据是以“记录”的形式按照统一的格式进行存储的&#xff0c;而不是杂乱无章的 相同格式和类型的数据统一存…...

使用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: 找不到指定的模块 的详细解决办法

原因&#xff1a;安装的包与python版本不一致 解决方法&#xff1a; 查看python版本&#xff1a; #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第三方模块&#xff08;库、包&…...

SemrushBot蜘蛛爬虫屏蔽方式

查看访问日志时候发现有SemrushBot爬虫 屏蔽方法&#xff1a; 使用robots.txt文件是一种标准的协议,用于告诉搜索引擎哪些页面可以和不能被爬取,如想禁止Googlebot爬取整个网站的话,可以在该文件中添加以下内容: User-agent: Googlebot Disallow: / 对于遵循robots协议的蜘蛛…...

6 ssh面密登录

1. 首先进入自己的家目录&#xff0c;执行命令 [atguiguhadoop102 .ssh]$ ssh-keygen -t rsa然后敲&#xff08;三个回车&#xff09;&#xff0c;就会生成两个文件id_rsa&#xff08;私钥&#xff09;、id_rsa.pub&#xff08;公钥&#xff09; 2. 将公钥拷贝到要免密登录的…...

基于微信小程序的汽车租赁系统的设计与实现ljx7y

汽车租赁系统&#xff0c;主要包括管理员、用户二个权限角色&#xff0c;对于用户角色不同&#xff0c;所使用的功能模块相应不同。本文从管理员、用户的功能要求出发&#xff0c;汽车租赁系统系统中的功能模块主要是实现管理员后端&#xff1b;首页、个人中心、汽车品牌管理、…...

优化学习体验的在线考试系统

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

1267. 统计参与通信的服务器

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

【考研数学】矩阵、向量与线性方程组解的关系梳理与讨论

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

打造个人的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 个&#xff0c;跟上一部分比起来多了两个稍微大一点的首页布局&#xff0c;上篇&#xff1a;53 个 CSS 特效 1&#xff0c;依旧&#xff0c;预览地址在 http://www.goldenaarcher.com/html-css-js-proj/&#xff0c;git 地址&#xff1a; …...

ubuntu学习(六)----文件编程实现cp指令

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

wireshark过滤器的使用

目录 wiresharkwireshark的基本使用wireshark过滤器的区别 抓包案例 wireshark wireshark的基本使用 抓包采用 wireshark&#xff0c;提取特征时&#xff0c;要对 session 进行过滤&#xff0c;找到关键的stream&#xff0c;这里总结了 wireshark 过滤的基本语法&#xff0c;…...

Zookeeper 脑裂问题

什么是脑裂&#xff1f; 脑裂(split-brain)就是“大脑分裂”&#xff0c;也就是本来一个“大脑”被拆分了两个或多个“大脑”&#xff0c;如果一个人有多个大脑&#xff0c;并且相互独立的话&#xff0c;那么会导致人体“手舞足蹈”&#xff0c;“不听使唤”。 脑裂通常会出现…...

计算机网络高频面试题解(一)

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配置 摘要 由于…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...

Vue 3 + WebSocket 实战:公司通知实时推送功能详解

&#x1f4e2; Vue 3 WebSocket 实战&#xff1a;公司通知实时推送功能详解 &#x1f4cc; 收藏 点赞 关注&#xff0c;项目中要用到推送功能时就不怕找不到了&#xff01; 实时通知是企业系统中常见的功能&#xff0c;比如&#xff1a;管理员发布通知后&#xff0c;所有用户…...

写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里

写一个shell脚本&#xff0c;把局域网内&#xff0c;把能ping通的IP和不能ping通的IP分类&#xff0c;并保存到两个文本文件里 脚本1 #!/bin/bash #定义变量 ip10.1.1 #循环去ping主机的IP for ((i1;i<10;i)) doping -c1 $ip.$i &>/dev/null[ $? -eq 0 ] &&am…...

FOPLP vs CoWoS

以下是 FOPLP&#xff08;Fan-out panel-level packaging 扇出型面板级封装&#xff09;与 CoWoS&#xff08;Chip on Wafer on Substrate&#xff09;两种先进封装技术的详细对比分析&#xff0c;涵盖技术原理、性能、成本、应用场景及市场趋势等维度&#xff1a; 一、技术原…...

GC1808:高性能音频ADC的卓越之选

在音频处理领域&#xff0c;高质量的音频模数转换器&#xff08;ADC&#xff09;是实现精准音频数字化的关键。GC1808&#xff0c;一款96kHz、24bit立体声音频ADC&#xff0c;以其卓越的性能和高性价比脱颖而出&#xff0c;成为众多音频设备制造商的理想选择。 GC1808集成了64倍…...