「高效实用!」Linux JVM进程监控工具推荐 (linux jvm进程监控工具)

高效实用!Linux JVM进程监控工具推荐

随着企业应用的不断发展,Java虚拟机(JVM)的使用变得越来越广泛。然而,对于运行Java的应用程序来说,JVM进程的管理和监控也变得愈发重要。在Linux操作系统中,有很多工具可以用于监控JVM进程并且有许多功能。

在这篇文章中,我们将介绍一些高效实用的Linux JVM进程监控工具。

1. jConsole

jConsole是官方提供的用于监控和管理JVM的工具,它可以通过JMX协议连接JVM进程,并且提供了丰富的指标信息。除了常规的内存、线程、CPU使用量等指标以外,还支持可配置的JMX强制垃圾回收、线程转储等功能,方便用户针对需要监控的指标设置警报。jConsole是免费的,适用于JDK 5.0及以上版本。

2. VisualVM

VisualVM是一种面向Java开发人员的多合一性能分析工具,可以用于本地和远程监控JVM进程,并且提供了丰富的内存、线程、GC、CPU等指标信息,支持JMX、JVM TI、JVMTI插件等模式连接不同的JVM进程,并且提供了在多个进程间快速切换的功能。此外,VisualVM还可以对Java应用程序进行剖析和监控,并且支持SaaS形式进行扩展。VisualVM是免费的,适用于所有的JDK版本。

3. jmap

jmap是一种命令行工具,可以生成堆转储文件(heap dump)、查看堆中的对象和空间使用状况以及生成类似于jconsole的内存分析报告。jmap可以在不停止JVM进程的情况下收集JVMheap dump,但是该进程会占用一定的内存空间。jmap通常作为内存泄漏或OOM的分析工具使用。

4. jstat

jstat是一种命令行工具,可以监控JVM的垃圾回收、类加载、线程状况等信息,可以以csv格式输出指定时间间隔的JVM状态。jstat通常用于性能监控和调优,可以对JVM进程进行动态地和实时的监控,便于用户快速进行问题定位和调整。jstat是免费的,适用于所有的JDK版本。

5. gcviewer

gcviewer是一种基于Java实现的垃圾回收分析器,可以将不同的GC日志转换成图表显示,同时提供了多种垃圾回收算法的可视化分析和对GC日志的高级分析功能。gcviewer可以方便地查看GC日志,并且通过图表化方式展现垃圾回收的结果,支持不同的GC日志格式,也可以输出到HTML或图像文件中。gcviewer是免费的,适用于所有的JDK版本。

在本文中,我们介绍了一些高效实用的Linux JVM进程监控工具,这些工具不仅可以帮助用户对JVM的各种指标进行监控和管理,还可以支持JVM的多种连接方式和输出方式,具有比较好的可定制性和可扩展性。用户可以根据自己的需求来选择适合自己的工具,并且将这些监控工具融合到应用程序的开发和优化中,理顺业务流程,提高企业的应用性能和效率。

相关问题拓展阅读:

  • Linux系统监控命令及如何定位到Java线程
  • jvm 性能调优工具之 jstat 命令详解

Linux系统监控命令及如何定位到Java线程

CPU资知模源时,按照以下步骤进行查找:

(一):通过【 top -pH】 查看java进岩念程的有哪些线程的运行情况;

和通过【jstack> stack.log】生成Java线程的dump详细信息;

先用top命令找出占用资源厉害的java进程id,如图:# top

如上图所示,java的进程id为’52554′,接下来用top命令单独对这个进程中的所有线程作监视:

1 top -pH

# top视图里面里面可以通过快捷键依次b ,x高亮显示top的搭枣缓列找出需要的线程,默认CPU排序,Sh

桃花溪(张旭)

jvm 性能调优工具之 jstat 命令详解

Jstat名称:Java Virtual Machine statistics monitoring tool

功能描述:

Jstat是JDK自带的一个轻量级小工具。它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。

命令用法:jstat

注意:使用的jdk版本是jdk8。

C:\Users\Administrator>jstat -helpUsage: jstat -help|-optionsjstat – > Definitions:An option reported by the -options optionVirtual Machine Identifier. A vmid takes the following form:> Where is the local vm identifier for the target Java virtual machine, typically a process id; is the name of the host running the target Java virtual machine; and is the port number for the rmiregistry on the target host. See the jvmstat documentation for a more complete description of the Virtual Machine Identifier.Number of samples between header lines. Sampling interval. The following forms are allowed: Where is an integer and the suffix specifies the units as milliseconds(“ms”) or seconds(“s”). The default units are “ms”.Number of samples to take before terminating. -J Pass directly to the runtime system.

option:参数选项

-t:可以在打印的列加上Timestamp列,用于显示系统运行的时间

-h:可以在周期性数据输出的时型蠢候,指定输出多少行以后输出一次表头

vmid:Virtual Machine ID( 进程的 pid)

interval:执行每次的间隔时间,单位为毫秒

count:用于指定输出多少次记录,缺省则会一直打印

option 可以从下面参数中选择

jstat -options

-class 用卜悄陪于查看类加载情况的统计

-compiler 用于查看HotSpot中即时编译器编译情运档况的统计

-gc 用于查看JVM中堆的垃圾收集情况的统计

-gccapacity 用于查看新生代、老生代及持久代的存储容量情况

-gcmetacapacity 显示metaspace的大小

-gcnew 用于查看新生代垃圾收集的情况

-gcnewcapacity 用于查看新生代存储容量的情况

-gcold 用于查看老生代及持久代垃圾收集的情况

-gcoldcapacity 用于查看老生代的容量

-gcutil 显示垃圾收集信息

-gccause 显示垃圾回收的相关信息(通-gcutil),同时显示最后一次仅当前正在发生的垃圾收集的原因

-printcompilation 输出JIT编译的方法信息

示例:

1.-class 类加载统计

# jps #先通过jps获取到java进程号(这里是一个zookeeper进程)3346 QuorumPeerMain7063 Jps# jstat -class 3346 #统计JVM中加载的类的数量与sizeLoaded Bytes Unloaded Bytes Time. 0..02

Loaded:加载类的数量

Bytes:加载类的size,单位为Byte

Unloaded:卸载类的数目

Bytes:卸载类的size,单位为Byte

Time:加载与卸载类花费的时间

2.-compiler 编译统计

# jstat -compiler 3346 #用于查看HotSpot中即时编译器编译情况的统计Compiled Failed Invalid Time FailedType FailedMethod0.

Compiled:编译任务执行数量

Failed:编译任务执行失败数量

Invalid:编译任务执行失效数量

Time:编译任务消耗时间

FailedType:最后一个编译失败任务的类型

FailedMethod:最后一个编译失败任务所在的类及方法

3.-gc 垃圾回收统计

# jstat -gc 3346 #用于查看JVM中堆的垃圾收集情况的统计 S0C S1C S0U S1U ECEUOCOUMC MU CCSC CCSU YGC YGCT FGC FGCT GCT 128.0 128.0 0…….0 8130.4 1024.0 996….019

S0C:年轻代中之一个survivor(幸存区)的容量 (字节)

S1C:年轻代中第二个survivor(幸存区)的容量 (字节)

S0U:年轻代中之一个survivor(幸存区)目前已使用空间 (字节)

S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)

EC:年轻代中Eden(伊甸园)的容量 (字节)

EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)

OC:Old代的容量 (字节)

OU:Old代目前已使用空间 (字节)

MC:metaspace(元空间)的容量 (字节)

MU:metaspace(元空间)目前已使用空间 (字节)

CCSC:当前压缩类空间的容量 (字节)

CCSU:当前压缩类空间目前已使用空间 (字节)

YGC:从应用程序启动到采样时年轻代中gc次数

YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)

FGC:从应用程序启动到采样时old代(全gc)gc次数

FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT:从应用程序启动到采样时gc用的总时间(s)

4.-gccapacity 堆内存统计

# jstat -gccapacity 3346 #用于查看新生代、老生代及持久代的存储容量情况 NGCMN NGCMX NGC S0C S1CEC OGCMN OGCMXOGCOCMCMN MCMX MC CCN CCX CCSC YGC FGC 1280…0 128.0 128…………# jstat -gccapacity -h#-h5:每5行显示一次表头 1000:每1秒钟显示一次,单位为毫秒 NGCMN NGCMX NGC S0C S1CEC OGCMN OGCMXOGCOCMCMN MCMX MC CCN CCX CCSC YGC FGC 1280…0 128.0 128………… 1280…0 128.0 128………… 1280…0 128.0 128………… 1280…0 128.0 128………… 1280…0 128.0 128………… NGCMN NGCMX NGC S0C S1CEC OGCMN OGCMXOGCOCMCMN MCMX MC CCN CCX CCSC YGC FGC 1280…0 128.0 128………… 1280…0 128.0 128………… 1280…0 128.0 128………… 1280…0 128.0 128…………

NGCMN:年轻代(young)中初始化(最小)的大小(字节)

NGCMX:年轻代(young)的更大容量 (字节)

NGC:年轻代(young)中当前的容量 (字节)

S0C:年轻代中之一个survivor(幸存区)的容量 (字节)

S1C:年轻代中第二个survivor(幸存区)的容量 (字节)

EC:年轻代中Eden(伊甸园)的容量 (字节)

OGCMN:old代中初始化(最小)的大小 (字节)

OGCMX:old代的更大容量(字节)

OGC:old代当前新生成的容量 (字节)

OC:Old代的容量 (字节)

MCMN:metaspace(元空间)中初始化(最小)的大小 (字节)

MCMX:metaspace(元空间)的更大容量 (字节)

MC:metaspace(元空间)当前新生成的容量 (字节)

CCN:最小压缩类空间大小

CCX:更大压缩类空间大小

CCSC:当前压缩类空间大小

YGC:从应用程序启动到采样时年轻代中gc次数

FGC:从应用程序启动到采样时old代(全gc)gc次数

5.-gcmetacapacity 元数据空间统计

# jstat -gcmetacapacity 3346 #显示元数据空间的大小MCMN MCMX MC CCN CCX CCSC YGC FGC FGCT GCT0..0 8448.0 0..0 1024..000 0.020

MCMN:最小元数据容量

MCMX:更大元数据容量

MC:当前元数据空间大小

CCN:最小压缩类空间大小

CCX:更大压缩类空间大小

CCSC:当前压缩类空间大小

YGC:从应用程序启动到采样时年轻代中gc次数

FGC:从应用程序启动到采样时old代(全gc)gc次数

FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT:从应用程序启动到采样时gc用的总时间(s)

6.-gcnew 新生代垃圾回收统计

# jstat -gcnew 3346 #用于查看新生代垃圾收集的情况S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT128.0 128.0 67.8 0..0 1024.0 362.2 8 0.020  

S0C:年轻代中之一个survivor(幸存区)的容量 (字节)

S1C:年轻代中第二个survivor(幸存区)的容量 (字节)

S0U:年轻代中之一个survivor(幸存区)目前已使用空间 (字节)

S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)

TT:持有次数限制

MTT:更大持有次数限制

DSS:期望的幸存区大小

EC:年轻代中Eden(伊甸园)的容量 (字节)

EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)

YGC:从应用程序启动到采样时年轻代中gc次数

YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)

7.-gcnewcapacity 新生代内存统计

# jstat -gcnewcapacity 3346 #用于查看新生代存储容量的情况NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC1280..0 1280.0 8320.0 128.0 8320.0 128..0 1024.0 8 0

NGCMN:年轻代(young)中初始化(最小)的大小(字节)

NGCMX:年轻代(young)的更大容量 (字节)

NGC:年轻代(young)中当前的容量 (字节)

S0CMX:年轻代中之一个survivor(幸存区)的更大容量 (字节)

S0C:年轻代中之一个survivor(幸存区)的容量 (字节)

S1CMX:年轻代中第二个survivor(幸存区)的更大容量 (字节)

S1C:年轻代中第二个survivor(幸存区)的容量 (字节)

ECMX:年轻代中Eden(伊甸园)的更大容量 (字节)

EC:年轻代中Eden(伊甸园)的容量 (字节)

YGC:从应用程序启动到采样时年轻代中gc次数

FGC:从应用程序启动到采样时old代(全gc)gc次数

8.-gcold 老年代垃圾回收统计

# jstat -gcold 3346 #用于查看老年代及持久代垃圾收集的情况MC MU CCSC CCSU OC OU YGC FGC FGCT GCT8448.0 8227.5 1024.0 1003..0 2102..000 0.020 

MC:metaspace(元空间)的容量 (字节)

MU:metaspace(元空间)目前已使用空间 (字节)

CCSC:压缩类空间大小

CCSU:压缩类空间使用大小

OC:Old代的容量 (字节)

OU:Old代目前已使用空间 (字节)

YGC:从应用程序启动到采样时年轻代中gc次数

FGC:从应用程序启动到采样时old代(全gc)gc次数

FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT:从应用程序启动到采样时gc用的总时间(s)

9.-gcoldcapacity 老年代内存统计

# jstat -gcoldcapacity 3346 #用于查看老年代的容量OGCMN OGCMX OGC OC YGC FGC FGCT GCT15104…..000 0.020

OGCMN:old代中初始化(最小)的大小 (字节)OGCMX:old代的更大容量(字节)OGC:old代当前新生成的容量 (字节)OC:Old代的容量 (字节)YGC:从应用程序启动到采样时年轻代中gc次数FGC:从应用程序启动到采样时old代(全gc)gc次数FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)GCT:从应用程序启动到采样时gc用的总时间(s) 在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

10.-gcutil 垃圾回收统计

# jstat -gcutil 3346 #显示垃圾收集信息S0 S1 E O M CCS YGC YGCT FGC FGCT GCT52.97 0.00 42.10 13.92 97.39 98.02 8 0..000 0.020 

S0:年轻代中之一个survivor(幸存区)已使用的占当前容量百分比

S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比

E:年轻代中Eden(伊甸园)已使用的占当前容量百分比

O:old代已使用的占当前容量百分比

M:元数据区已使用的占当前容量百分比

CCS:压缩类空间已使用的占当前容量百分比

YGC :从应用程序启动到采样时年轻代中gc次数

YGCT :从应用程序启动到采样时年轻代中gc所用时间(s)

FGC :从应用程序启动到采样时old代(全gc)gc次数

FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT:从应用程序启动到采样时gc用的总时间(s)

11.-gccause

# jstat -gccause 3346 #显示垃圾回收的相关信息(通-gcutil),同时显示最后一次或当前正在发生的垃圾回收的诱因S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC GCC52.97 0.00 46.09 13.92 97.39 98.02 8 0..000 0.020 Allocation Failure No GC

LGCC:最后一次GC原因

GCC:当前GC原因(No GC 为当前没有执行GC)

12.-printcompilation JVM编译方法统计

# jstat -printcompilation 3346 #输出JIT编译的方法信息Compiled Size Type Methodsun/nio/ch/Util$2 clear

Compiled:编译任务的数目

Size:方法生成的字节码的大小

Type:编译类型

Method:类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的

远程监控

与jps一样,jstat也支持远程监控,同样也需要开启安全授权,方法参照jps。

linux jvm进程监控工具的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux jvm进程监控工具,「高效实用!」Linux JVM进程监控工具推荐,Linux系统监控命令及如何定位到Java线程,jvm 性能调优工具之 jstat 命令详解的信息别忘了在本站进行查找喔。

香港服务器首选树叶云,2H2G首月10元开通。
树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/164454.html<

(0)
管理的头像管理
上一篇2025-03-19 15:09
下一篇 2025-03-19 15:11

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注