Java中常用的监控命令

VirtualVM:Java 监控工具使用指南 进入某个 Java 进程的监控界面后,首先看到的是“概述”页面,这里会显示 Java 进程的基本信息,如 JVM 版本、启动时间、堆内存大小等。 阅读详情

Java 提供了多种监控工具,这些工具包含了许多命令行工具,用于监控、诊断和管理 Java 应用程序的性能。这些工具主要位于 Java 安装目录下的 bin 文件夹中,以下是几个常用的 Java 自带监控命令的详细说明:

1. jps (Java Virtual Machine Process Status Tool)

用于列出当前运行的 Java 进程的 ID 及其名称,类似于 ps 命令。

  • 基本用法:jps [options]
  • 常用选项:
    • -l:显示主类的完整包名或启动的 JAR 文件路径。
    • -v:显示传递给 JVM 的参数。

示例:

jps -l

2. jstat (Java Virtual Machine Statistics Monitoring Tool)

用于监控 JVM 各个部分的实时状态,包括垃圾回收、类加载、JIT 编译等。

  • 基本用法:jstat [option vmid [interval[s|ms] [count]]]
  • 常用选项:
    • -gc:显示垃圾回收信息。
    • -class:显示类加载信息。
    • -compiler:显示 JIT 编译器的信息。

示例:

jstat -gc <pid> 1000 5  # 每隔1秒显示一次 GC 状况,共显示5次

3. jmap (Memory Map Tool)

用于生成 JVM 中的内存映射,帮助分析 Java 堆的使用情况,还可以生成堆转储(heap dump)文件。

  • 基本用法:jmap [option] <pid>
  • 常用选项:
    • -heap:显示堆的使用情况。
    • -dump:format=b,file=<filename>:生成堆转储文件,通常用于内存泄露分析。
    • -histo:输出堆中对象的统计信息,包括对象数量和总大小。

示例:

jmap -dump:format=b,file=heapdump.hprof <pid>

4. jstack (Java Stack Trace Tool)

用于生成 Java 线程的堆栈跟踪信息,可以帮助分析死锁、性能瓶颈等问题。

  • 基本用法:jstack [option] <pid>
  • 常用选项:
    • -l:显示关于锁的附加信息。
    • -F:强制输出线程堆栈信息。

示例:

jstack -l <pid>

5. jconsole (Java Monitoring and Management Console)

jconsole 是 Java 自带的图形化工具,用于连接到本地或远程的 Java 进程,监控 CPU、内存、线程、类加载情况等。

  • 基本用法:jconsole [pid]
  • 可以直接通过命令启动,也可以通过点击图标运行。

6. jcmd (JVM Diagnostic Command Tool)

功能强大,可以代替 jmap、jstack 等工具,支持更多命令选项,能够执行线程转储、堆转储、GC 操作等。

  • 基本用法:jcmd <pid> command
  • 常用命令:
    • GC.heap_dump:生成堆转储文件。
    • Thread.print:输出线程堆栈信息。
    • GC.run:触发垃圾回收。

示例:

jcmd <pid> Thread.print  # 打印线程信息

7. jinfo (Configuration Info for Java)

用于显示或修改正在运行的 Java 进程的配置信息,如系统属性和 JVM 选项。

  • 基本用法:jinfo [option] <pid>
  • 常用选项:
    • -sysprops:显示系统属性。
    • -flag <name>:显示指定的 JVM 选项。

示例:

jinfo -flag MaxHeapSize <pid>

场景 1:Java 应用内存泄露的排查

问题描述:应用程序频繁出现 OutOfMemoryError,需要定位内存泄露的原因。

解决步骤:

  1. 查看进程:首先用 jps 查看正在运行的 Java 进程,找到要诊断的进程 ID。

    jps -l
    

    输出结果类似于:

    12345 MyJavaApp
    
  2. 生成堆转储:使用 jmap 生成堆转储文件,供后续分析。

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

    heapdump.hprof 文件可以用专业工具(如 Eclipse MAT 或 VisualVM)进行分析,查找哪些对象占用了最多内存,是否有过多重复对象。

  3. 查看对象分布:使用 jmap -histo 查看对象统计,定位哪些类的实例数量异常。

    jmap -histo 12345 | head -n 20
    

    输出会列出对象类型、数量和占用的内存,通过观察异常多的对象来排查可能的内存泄漏来源。


场景 2:线程死锁排查

问题描述:系统出现无响应现象,怀疑存在线程死锁。

解决步骤:

  1. 查看进程:使用 jps 命令确认目标 Java 进程。

    jps -l
    
  2. 生成线程堆栈:使用 jstack 查看线程堆栈,定位死锁线程。

    jstack -l 12345
    

    几种线程状态:

    • BLOCKED:线程正在等待锁资源,可能存在锁竞争问题。
    • WAITING:线程在等待条件满足,比如等待外部资源、网络IO、锁等,可能有资源未释放或超时问题。
    • TIMED_WAITING:线程在等待指定时间内的操作完成,超时后自动退出等待。可能和外部资源或数据库超时有关。
    • RUNNABLE:线程正在运行,通常是CPU消耗较多的线程。检查是否存在占用过高CPU的情况。
  3. 进一步确认死锁:jconsole 提供了图形界面,可以更直观地观察线程状态。启动后连接到对应进程,在“线程”页面可以直接看到死锁信息。


场景 3:垃圾回收频繁导致的性能下降

问题描述:应用运行时频繁出现 GC,导致性能下降,响应速度变慢。

解决步骤:

  1. 查看 GC 状态:使用 jstat 查看垃圾回收信息,判断是否存在频繁的 GC。

    jstat -gc 12345 1000 10
    

    上述命令每隔 1 秒采样一次,连续 10 次,输出中可以看到年轻代和老年代的 GC 次数和时间。频繁的年轻代 GC 可能是内存分配过多导致的,频繁的老年代 GC 则可能表示对象老化导致的内存不足。

  2. 生成堆信息:通过 jmap -heap 查看堆的总体使用情况,确认是否存在内存不足。

    jmap -heap 12345
    
  3. GC 手动触发:如果希望立即触发 GC,可以使用 jcmd 命令。

    jcmd 12345 GC.run
    

场景 4:系统参数调整

问题描述:应用在运行中,需要调整 JVM 参数以优化性能。

解决步骤:

  1. 查看当前 JVM 配置:使用 jinfo 命令查看 JVM 配置参数,确认是否有需要调整的参数。

    jinfo -flags 12345
    
  2. 修改 JVM 参数:有些 JVM 参数支持在运行中调整,可以直接用 jinfo -flag 进行修改,例如启用 GC 日志。

    jinfo -flag +PrintGC 12345
    

场景 5:类加载问题排查

问题描述:某些类加载过程耗时过长,可能影响应用启动速度。

解决步骤:

  1. 查看类加载信息:使用 jstat -class 查看类加载情况,包括已加载的类数量和加载时间。

    jstat -class 12345 1000 5
    
  2. 生成堆转储:可以使用 jmap 生成转储文件,以分析哪些类占用了大量内存或是否有重复加载的类。

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

场景 6:排查 JIT 编译影响性能问题

问题描述:程序运行时的 CPU 使用率居高不下,怀疑是 JIT 编译的问题。

解决步骤:

  1. 查看 JIT 编译统计:使用 jstat -compiler 查看 JIT 编译信息。

    jstat -compiler 12345 1000 10
    

    输出会显示编译的次数和时间,如果编译时间过长,可能会对性能产生影响。

  2. 通过 jconsole 分析 CPU 使用情况:jconsole 的“CPU”页面可以帮助进一步分析具体的 CPU 使用情况。

Java 监控诊断利器 Arthas monitor/watch/trace 命令使用详解 阅读详情

相关推荐

一个高性能、无侵入的Java性能监控和统计工具,有点东西!

随着所在公司的发展,应用服务的规模不断扩大,原有的垂直应用架构已无法满足产品的发展,几十个工程师在一个项目里并行开发不同的功能,开发效率不断降低。无法知道每个服务的运行情况,例如,某一台服务它目前的 QPS 是多少?它的平均延迟是多少,99% 的延迟是多少,99.9% 的延迟又是多少?如何评估服务的容量,随着服务的调用量越来越大,这个服务需要多少机器来支撑?采用内存复用的方式,整个生命周期只产生极少的临时对象,不影响应用程序的GC。当服务出现抖动时,如何判断是 DB、Cache 还是下游服务引起的?

m0_71777195的博客 1076

Arthas百万级Java服务器监控工具

Arthas是由阿里巴巴推出的一款Java虚拟机的监控工具,利用Arthas可以对指定的JVM进程进行CPU、内存、线程、死锁监控处理,同时也可以动态的获取JVM进程中的源代码结构,本课程为学员介绍了Arthas工具的产生背景以及使用配置。

MQL5教程 01 MT5有关EA的操作、MetaEditor 工具栏主要功能

MQL5教程 01 MT5有关EA的操作、MetaEditor 工具栏主要功能

weixin_42830015的博客 3980

Java-性能分析&监控工具

MBean浏览器中查看类属性信息:内存栏目查看GC、各个内存区域使用情况:线程状态、死锁、堆栈信息:可以看到线程列表、线程状态、线程名称、线程堆栈等信息。

ALONG的博客 4180

DrissionPage实战:5分钟搞定京东滑块验证码自动登录(附完整轨迹生成代码)

本文详细介绍了如何使用DrissionPage工具实现京东滑块验证码的自动化登录,包括环境配置、滑块缺口识别、拟人化轨迹生成算法及完整登录流程。通过物理运动学模型和智能识别技术,有效提升验证码破解成功率,适用于电商自动化场景。

weixin_29229055的博客 243

远红外热传感器阵列 (32x24 RES) MLX90640ESF-BAA/BAB

Melexis MLX90640是一款小体积、低成本的完全校准的32x24像素红外阵列,采用行业标准,带数字接口。3.其工作温度范围为 -40°C 至 85°C,可测量的物体温度范围为 -40°C 至 300°C。该红外传感器在整个测量范围内保持高精度水平,可提供 ±1°C 的典型目标物体温度精度。2.这款 32x24 像素的器件适用于安全和便利应用,包括防火系统、智能楼宇、智能照明、IP/监控摄像机、HVAC 设备和车辆座椅占用检测。1.工作温度范围为 -40 至 85°C,可在严苛的工业环境中部署。

Summit__的博客 1999

java常用监控命令

Java常用的监控命令比如top,jps,jmap等,下面具体讲解一下使用方式 1、top 使用top展示的信息如下所示 其中第一行展示了机器的负载(load)信息:当前时间,机器运行了多长时间,有多少登录用户,系统在过去的1分钟,5分钟和15分钟内的平均负载 第二行展示了进程调度情况 第三,四,五行分别展示了CPU使用情况,内存占用状态,包括主存与交换分区 后面展示了具体进程的使用情况 2、jps 展示了应用程序进程id及启动类名 jsp -l 输出应用程序主类完整package

aasoga的博客 1085

【AI Infra】【RLHF框架】VeRL中WorkerGroup与Ray资源调度的协同机制剖析

本文深入剖析了VeRL框架中WorkerGroup与Ray资源调度的协同机制。通过解析Ray Placement Group的资源抽象和VeRL的RayResourcePool封装,详细阐述了WorkerGroup如何与底层资源精确绑定,并实现RLHF训练中异构、多阶段任务的灵活资源分配与动态调整,为大规模分布式强化学习训练提供了高效解决方案。

weixin_29204205的博客 389

关于java进程监控常用linux命令

避免Java反编译代码泄露:Spring Boot集成ProGuard进行代码混淆。等待获取管程,Waiting on monitor entry(点关注)jstack 进程ID | grep -A 10 十六进制的线程ID。对象等待中,Object.wait() 或 TIMED_WAITING。等待资源,Waiting on condition(重点关注)printf "%x\n" 线程id。# 将10进制线程id转为16进制。死锁,Deadlock(重点关注)阻塞,Blocked(重点关注)

SUPER5266的博客 457

效果炸裂_安装midscene_copw基于midscene操作电脑_基于视觉的软件测试执行_MIDSCENE的安装和使用---AI大模型应用探索0012

摘要:本文介绍了如何通过安装MidSceneJS来增强Copaw的屏幕操作能力。首先需要安装Node.js和npm,并配置淘宝镜像源加速安装。然后全局安装MidScene CLI工具(npm install @midscene/cli -g)。接着配置视觉大模型服务,通过设置环境变量指定模型API密钥、名称、基础URL和家族类型(如qwen3.5-27b),配置文件需存放在C:\Users\Administrator.copaw目录。安装成功后,MidScene已能成功识别并操作屏幕,使用效果良好。文中还提

添柴程序猿的专栏 638

【PCIe 总线及设备入门学习专栏 6.2 -- PCIe VDM (Vendor Defined Messages)】

在PCIe协议中,Vendor Defined Messages (VDMs) 是一种允许厂商定义和传输特定功能的消息类型。这种机制扩展了标准 PCIe 消息的功能,可以用于实现供应商自定义的功能,例如固件更新、设备配置和诊断信息传输。PCIe VDM 是通过实现的,它遵循 PCIe 协议栈的结构,包括事务层、数据链路层和物理层。

CodingCos的博客 1892

java常用监控命令,java 运维监控常用命令

1、top说明:top命令用来显示执行中的程序进程,使用权限是所有用户。按q键退出格式:top [-] [d delay] [q] [c] [S] [s] [i] [n]主要参数:d:指定更新的间隔,以秒计算。q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。c:显示进程完整的路径与名称。S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。s:安全模式。i:...

weixin_28965963的博客 365

cartographer运行错误集合

播放bag的时候错误 Check failed: sensor_to_tracking->translation().norm() < 1e-5 The IMU frame must be colocated with the tracking frame. Transforming linear acceleration into the tracking frame will otherwise be imprecise tracking frame不是imu的link 修改lua文件中的.

Studying…… 2016

java常用监控命令,Jvm常用监控工具

jconsoleJconsole(Java Monitoring and Management Console)是从java5开始,在JDK中自带的java监控和管理控制台,用于对JVM中内存,线程和类等的监控,是一个基于JMX(java management extensions)的GUI性能监测工具。jconsole使用jvm的扩展机制获取并展示虚拟机中运行的应用程序的性能和资源消耗等信息。V...

weixin_34947914的博客 160

仅使用 Python 创建的 Web 应用程序(前端版本)第03章Streamlit-多页面

接下来,我们将解释多页面切换。Streamlit 没有“多页面”或“页面路由”等功能。另一方面,通过根据用户动作切换要执行的功能,可以使其看起来好像存在“多个页面”。注意:我认为它类似于 SinglePageApplication (SPA)。然而,根据 React、Vue 等中使用的 URL 路径来更改页面的路由很困难。还有一个用于获取查询参数的实验性 API,但如果您确实需要这种功能,我认为认真尝试编写 React 或 Vue 是个好主意。我们来看一个通过按下按钮来切换页面的示例,如下所示。

xianyinsuifeng的博客 1326

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java 监控性能命令_java性能监控常用的几个命令

找到性能问题的第一步是监控应用的行为,通过监控提供的线索,我们可以将性能问题进行归类并分析。1、CPU使用率:大多数操作系统的CPU使用率分为用户态CPU使用率和系统态CPU使用率。用户态CPU使用率是指执行应用程序代码的时间占总CPU时间的百分比,相比而言,系统态CPU使用率是指应用执行操作系统调用的时间占总CPU时间的百分比。系统态CPU使用率高意味着共享资源有竞争或者I/O设备之间有大量的交...

weixin_35949857的博客 725

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java常用监控命令,Linux 系统常用的监控命令

一、查看内存信息:[root@diaodu-0001 ~]# freetotal used free shared buff/cache availableMem: 1014372 135372 700772 6856 178228 736608Swap: 0 ...

weixin_36006615的博客 93

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

java bin目录下的命令_【Java】bin目录监控常用命令

Java的安装包自带了很多优秀的工具,善用这些工具对于监控和调试Java程序非常有帮助。常用工具如下:jps用途:jps用来查看JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等。常用参数:-l: 输出完成的包名称;-m: 输出程序的命令行输入参数;-v: 输出完整的JVM参数。jstack用途:1)查看java程序崩溃生成core文件,获得core文件的java stack和nat...

weixin_35806032的博客 785

java性能监控常用的几个命令

找到性能问题的第一步是监控应用的行为,通过监控提供的线索,我们可以将性能问题进行归类并分析。 1、CPU使用率:大多数操作系统的CPU使用率分为用户态CPU使用率和系统态CPU使用率。用户态CPU使用率是指执行应用程序代码的时间占总CPU时间的百分比,相比而言,系统态CP...

chitankong1289的博客 495

Linux下的Java虚拟机性能监控常用命令

java包中提供了很多监控JVM的工具类,作为java程序员必须得掌握常用的几个工具,下面是几个常用的JVM性能监控与故障处理工具的介绍与使用。 1、jstack 该命令用于生成当前时刻虚拟机的线程快照,可以用于定位线程出现长时间停顿的原因,包括死锁、死循环、超时等待等。 jstack命令格式: jstack [option] vmid vmid可以通过ps -ef|grep java命...

liinux-Talk is cheap,show me the code. 715

使用arthas监控java进程常用命令

arthas官方教程 监控方法耗时 trace -E com.test.ClassA|org.test.ClassB method1|method2|method3 输出profiler火焰图 profiler start profiler stop

m178643的博客 644

java性能监控常用命令

jps-m-l:主要用来输出JVM中运行的进程状态信息 jstack-lpid 来观察锁持有情况 jsatck pid | grep pid(十六进制):输出进程pid的堆栈信息 jmap -heap pid:查看进程堆内存使用情况,包括使用的GC算法、堆配置参数和各代中堆内存使用情况 jmap-histo:live pid|more:查看堆内存中的对象数目、大小统计直方图,如...

weixin_30569153的博客 159

java 调优 命令_JVM监控和调优常用命令工具总结

JVM监控和调优在Java应用和服务出现莫名的卡顿、CPU飙升等问题时总是要分析一下对应进程的JVM状态以定位问题和解决问题并作出相应的优化,在这过程中Java自带的一些状态监控命令和图形化工具就非常方便了。本文总结了最常用的命令行工具及其常用参数解释,图形化监控工具的用法,仅供参考。jpsJava版的ps命令,查看java进程及其相关的信息,如果你想找到一个java进程的pid,那可以用jps命...

weixin_39877050的博客 128

在Java层面(window和Linux系统)下的常用性能监控与调优工具的命令及操作

前言 总结,学习,发现问题,再总结,避免以后,在需要的时候抓狂! jvm中的gc的参数解释 年轻代survivor(幸存区)   S0C 年轻代中第一个survivor(幸存区)的容量(kb) S1C 年轻代中第二个survivor(幸存区)的容量(kb) 已使用 S0U 年轻代中第一个survivor(幸存区)目前已使用空间(kb) S1U 年轻代中第二个survivor(幸存区)目前已使用空间(kb) 年轻代中Eden(伊甸园)  

阿啄debugIT 1310

Java命令:jstat — 查看JVM的GC信息

文章目录一、简介二、常用命令1、jstat -gc pid 5000 20 : 垃圾回收统计2、jstat -gccapacity pid 5000 20 : 堆内存统计3、jstat -gcnew pid 5000 20 : 新生代垃圾回收统计4、jstat -gcnewcapacity pid 5000 20 : 新生代内存统计5、jstat -gcold pid 5000 20 : 老年代垃圾回收统计6、jstat -gcoldcapacity pid 5000 20 : 老年代内存统计7、jstat

Davis 2万+
上一篇: 矩阵基本的计算规则
下一篇: 分布式锁实现方式
yymagicer
博客等级 码龄13年 1425粉丝 180原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yymagicer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值