JVM监控和调优常用命令jps|jstat|jinfo|jmap|jhat|jstack实战

这篇具有很好参考价值的文章主要介绍了JVM监控和调优常用命令jps|jstat|jinfo|jmap|jhat|jstack实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.JVM监控和调优的主要目的

  1. 性能优化:通过JVM调优,可以提高Java应用程序的性能,减少响应时间,提高吞吐量,以更好地满足用户需求。性能优化可以加快应用程序的执行速度,减少延迟,提高用户体验。

  2. 内存管理:JVM负责管理Java应用程序的内存。正确的内存管理可以避免内存泄漏和内存溢出等问题,确保应用程序在长时间运行时不会耗尽内存或导致性能下降。

  3. 垃圾回收优化:垃圾回收是JVM的核心功能之一,它负责释放不再使用的对象并回收内存。通过调整垃圾回收器的参数和策略,可以减少垃圾回收的频率和开销,提高应用程序的响应速度。

  4. 资源利用率:JVM调优可以帮助应用程序更有效地利用计算资源,包括CPU、内存和线程等。这有助于降低硬件成本,提高应用程序的伸缩性和性能。

  5. 稳定性和可靠性:JVM调优可以提高应用程序的稳定性,降低崩溃和故障的风险。通过监视和调整JVM的行为,可以减少应用程序中的内存泄漏、死锁和其他潜在问题。

  6. 成本效益:优化JVM性能可以减少硬件和运维成本。通过更好地利用现有资源,可以延长硬件的使用寿命,降低云计算服务的费用,从而在长期内节省资金。

        总之,JVM调优是确保Java应用程序在生产环境中稳定、高性能运行的重要步骤。它需要深入理解Java虚拟机、垃圾回收机制、内存管理等方面的知识,以便根据应用程序的需求进行合适的调整和优化。通过JVM调优,可以提高应用程序的竞争力,提供更好的用户体验,并减少运维成本。

2.JVM监控和调优常用命令

2.1jps查看正在运行的Java进程

        jps(Java Process Status):显示指定系统内所有的HotSpot虚拟机进程(查看虚拟机进程信息),可用于查询正在运行的虚拟机进程。

基本使用语法为:jps [-q] [-mlvV] [<hostid>]

-q:仅仅显示LVMID(local virtual machine id),即本地虚拟机唯一id。不显示主类的名称等
-m:输出虚拟机进程启动时传递给主类main()的参数
-l:输出应用程序主类的全类名 或 如果进程执行的是jar包,则输出jar完整路径
-v:列出虚拟机进程启动时的JVM参数。比如:-Xms20m -Xmx50m是启动程序指定的jvm参数。---V:表示显示版本信息
hostid:RMI注册表中注册的主机名。如果想要远程监控主机上的 java 程序,需要安装 jstatd

上述命令在同一个【】内的命令也可以组合使用,示例
bdpcloud@host154[/home/bdpcloud]$ jps -mlvV
10240 DbToHiveServer-5.0.jar conf/reldbtohive -Xms512m -Xmx1g -Xss64m -Xmn128m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m

2.2jstat查看JVM统计信息

        jstat(JVM Statistics Monitoring Tool):用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。在没有GUI图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具。常用于检测垃圾回收问题以及内存泄漏问题。

基本使用语法为:jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

查看可选项:jstat -options所有参数
类装载相关的:
-class:显示ClassLoader的相关信息:类的装载、卸载数量、总空间、类装载所消耗的时间等
JIT相关的:
-compiler:显示JIT编译器编译过的方法、耗时等信息
-printcompilation:输出已经被JIT编译的方法
垃圾回收相关的(重点):
-gc:显示与GC相关的堆信息。包括Eden区、两个Survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息。
-gccapacity:显示内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间。
-gcutil:显示内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比。
-gccause:与-gcutil功能一样,但是会额外输出导致最后一次或当前正在发生的GC产生的原因。
-gcnew:显示新生代GC状况
-gcnewcapacity:显示内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间
-gcold:显示老年代GC状况
-gcoldcapacity:显示内容与-gcold基本相同,输出主要关注使用到的最大、最小空间
其他参数说明:
[-t] :
 可以在输出信息前加上一个Timestamp列,显示程序的运行时间。单位:秒
[-h<lines>]:可以在周期性数据输出时,输出多少行数据后输出一个表头信息
<vmid>:jps中的JVM进程
[<count>]]:
用于指定输出统计数据的周期,单位为毫秒。即:查询间隔
<count>]]:用于指定查询的总次数

jstat -class查看
bdpcloud@host154[/home/bdpcloud]$ jstat -class 7872
Loaded  Bytes  Unloaded  Bytes     Time   
 23203 45413.4        0     0.0     245.35

jstat -compiler查看
bdpcloud@host154[/home/bdpcloud]$ jstat -compiler 7872
Compiled Failed Invalid   Time   FailedType FailedMethod
   27280      8       0  1544.76          1 com/alibaba/csp/sentinel/util/TimeUtil$1 run

jstat -printcompilation 查看(输出已经被JIT编译的方法)
bdpcloud@host154[/home/bdpcloud]$ jstat -printcompilation 7872
Compiled  Size  Type Method
   27280    456    1 redis/clients/jedis/JedisFactory validateObject

jstat -gc查看(基于内存大小分析)
示例:
bdpcloud@host154[/home/bdpcloud]$ jstat -gc 7873
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
10752.0 10752.0 6792.1  0.0   153088.0 22379.3   175104.0   16293.0   53760.0 50572.8 7168.0 6508.4     14    5.373   2      4.079    9.452

也可以指定时间,次数,打印总次数输出
bdpcloud@host154[/home/bdpcloud]$ jstat -gc -t 7873 1000 100

参数说明:
S0C:表示年轻代(Young Generation)中的 Survivor 0 区的容量(以KB为单位)。
S1C:表示年轻代中的 Survivor 1 区的容量(以KB为单位)。
S0U:表示年轻代中 Survivor 0 区的使用量(以KB为单位)。
S1U:表示年轻代中 Survivor 1 区的使用量(以KB为单位)。
EC:表示年轻代中 Eden 区的容量(以KB为单位)。
EU:表示年轻代中 Eden 区的使用量(以KB为单位)。
OC:表示老年代(Old Generation)的容量(以KB为单位)。
OU:表示老年代的使用量(以KB为单位)。
MC:表示方法区(Metaspace)的容量(以KB为单位)。
MU:表示方法区的使用量(以KB为单位)。
CCSC:表示压缩类空间(Compressed Class Space)的容量(以KB为单位)。
CCSU:表示压缩类空间的使用量(以KB为单位)。
YGC:表示年轻代垃圾回收的次数。
YGCT:表示年轻代垃圾回收所花费的总时间&#x文章来源地址https://www.toymoban.com/news/detail-696779.html

到了这里,关于JVM监控和调优常用命令jps|jstat|jinfo|jmap|jhat|jstack实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JVM的相关参数和调优】

    这类此参数在jdk的各个版本之间很少会变化,基本不改变 java -version,查看当前电脑上的jdk的版本信息 java -help,查看java命令的各种选项和参数 java -showversion,相当于上述两者结合 4. jps,查看后台运行的 java 进程 Test 的进程 id 为 29636 5. jinfo,通过进程 id 查看正在运行的 jav

    2024年01月17日
    浏览(40)
  • 面试系列 - JVM内存模型和调优详解

    目录 一、JVM内存模型 1. 程序计数器(Program Counter Register): 2.Java虚拟机栈(Java Virtual Machine Stacks): 3. 本地方法栈(Native Method Stack): 5. 方法区(Method Area): 6. 运行时常量池(Runtime Constant Pool): 7. 直接内存(Direct Memory): 二、垃圾回收期CMS和G1区别 1. 工作原理:

    2024年02月10日
    浏览(32)
  • 性能调优篇 二、Jvm监控及诊断工具-命令行篇

    性能诊断是软件工程师在日程生活中需要经常面对和解决的问题 Java作为最流行的编程语言之一,其应用性能诊断一直收到业内广泛关注。造成Java应用出现性能问题的因素非常多,例如线程控制,磁盘读写,数据库访问,网络io,垃圾收集等。 想要定位这些问题,一款优秀的

    2024年02月11日
    浏览(30)
  • jstat命令查看jvm内存情况及GC内存变化

    jstat [Options] pid [interval] [count] 参数说明: Options,选项,一般使用 -gc、-gccapacity查看gc情况 pid,VM的进程号,即当前运行的java进程号 interval,间隔时间(按该时间频率自动刷新当前内存情况),单位毫秒 count,打印次数,如果缺省则打印无数次 查看当前jvm内存情况 jstat -gc 12675

    2024年02月01日
    浏览(47)
  • 【Java可执行命令】(十七)JVM运行时信息动态维护工具 jinfo:一个维护 JVM 相关的配置参数和系统属性的工具,辅助故障排除、诊断和优化 ~

    jinfo 是 Java Development Kit (JDK) 自带的一款命令行工具。它旨在为用户提供进程的运行时信息,特别是与 Java 虚拟机 (JVM) 相关的配置和系统属性。 jinfo 使得用户可以轻松地查看和修改正在运行的 Java 进程的参数,以便进行 故障排除、诊断和优化 。 jinfo 允许用户动态查询和修改

    2024年02月13日
    浏览(37)
  • CPU飙升 频繁GC排查-使用jmap histro命令来查看JVM中对象的直方图

    jmap是Java Virtual Machine Tool的一部分,它允许您生成JVM堆转储文件并执行各种诊断操作。可以使用jmap histro命令来查看JVM中对象的直方图。 以下是使用jmap histro命令的语法: 参数pid是JVM进程的ID。请注意,您需要具有足够的权限才能执行此命令。 执行上述命令后,您将获得JVM堆

    2024年01月19日
    浏览(35)
  • 常用 JVM 调优工具

    点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~ JVM 日常调优总结起来就是:首先通过 jps 命令查看当前进程,然后根据 pid 通过 jinfo 命令查看和修改 jvm 参数,通过 jstat 命令查看 class 的加载信息以及 GC 信息,通过 jstack 命令查看线程堆栈

    2024年02月13日
    浏览(26)
  • JVM常用调优策略

    调优之前首先我们要知道怎样才算是“优”,不能笼统的说我的程序性能很好,所以就需要有一个具体的指标来衡量性能情况,而在JVM里面衡量性能两个指标分别“吞吐量”和“停顿时间”。 吞吐量: 程序运行过程中执行两种任务,分别是执行业务代码和进行垃圾回收,吞

    2024年02月09日
    浏览(23)
  • Kafka:硬件配置选择和调优

    100 万日活,每人每天 100 条日志, 每天总共的日志条数是 100 万 * 100 条 = 1 亿条(中型公司偏小)。 1 亿 / 24 小时 / 60 分 / 60 秒  =  1150 条/每秒钟。 每条日志大小:0.5k - 2k(取 1k)(甚至更多根据实际情况)。 1150 条/每秒钟 * 1k ≈ 1m/s 。 高峰期(中午小高峰 下午 8 - 12):

    2024年02月11日
    浏览(73)
  • 【Jvm】性能调优(拓展)Jprofiler如何监控和解决死锁、内存泄露问题

    Jprofilers是针对Java开发的 性能分析工具(免费试用10天) , 可以对Java程序的 内存,CPU,线程,GC,锁 等进行监控和分析 , 本人IDEA版本是 2020.2.2 ,选择的Jprofiler版本是 12.0 (早期的版本是纯英文的, 12.0支持中文 ,安装主要考虑是否与IDEA插件兼容即可) 进入Jprofiler官网下载 - Jprofiler 版本这

    2024年02月19日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包